777ca50328
update. 调整融合主菜单与板块 update. 分离新闻模块
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
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):
|
|
name = models.CharField('模块名称', max_length=100, unique=True)
|
|
code = models.SlugField('唯一标识', max_length=50, unique=True, help_text='用于模板或URL识别,建议英文')
|
|
order = models.PositiveSmallIntegerField('排序权重', default=0)
|
|
enabled = models.BooleanField('启用状态', default=True)
|
|
|
|
class Meta:
|
|
verbose_name = '新闻模块'
|
|
verbose_name_plural = '新闻模块'
|
|
ordering = ('order', 'name')
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
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}"
|