from django.db import models from django_ckeditor_5.fields import CKEditor5Field from common.base import BaseEntity from users.models import User # Create your models here. class NewsSection(BaseEntity): title = models.CharField('模块名称', max_length=100, unique=True) code = models.SlugField('唯一标识', max_length=50, unique=True, help_text='用于模板或URL识别,建议英文') order = models.PositiveSmallIntegerField('排序权重', default=0) visible = models.BooleanField('启用状态', default=True) class Meta: verbose_name = '新闻模块' verbose_name_plural = '新闻模块' ordering = ('order', 'title') def __str__(self): return self.title class News(BaseEntity): title = models.CharField("标题", max_length=200) section = models.ForeignKey(NewsSection, on_delete=models.CASCADE, verbose_name="所属板块") author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, verbose_name="作者") content = CKEditor5Field("正文") # 需安装 django-ckeditor cover = models.ImageField("封面图", upload_to='articles/%Y/%m/%d/', blank=True) is_published = models.BooleanField("已发布", default=True) class Meta: verbose_name = "新闻管理" verbose_name_plural = "新闻管理" def __str__(self): return f"{self.title} -> {self.section}"