From d0efff59dead27e22f71821547701df60423829b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A1=BE=E6=80=9D=E7=94=9C?= <3593988069@qq.com> Date: Sun, 9 Nov 2025 21:36:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20models.py=20=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DjangoBlog-master/comments/models.py | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/djangoblog/src/DjangoBlog-master/DjangoBlog-master/comments/models.py b/djangoblog/src/DjangoBlog-master/DjangoBlog-master/comments/models.py index 7c3bbc8d..f5e9270a 100644 --- a/djangoblog/src/DjangoBlog-master/DjangoBlog-master/comments/models.py +++ b/djangoblog/src/DjangoBlog-master/DjangoBlog-master/comments/models.py @@ -1,39 +1,61 @@ +# gst: 导入Django项目配置(含用户模型等核心配置) from django.conf import settings +# gst: 导入Django数据库模型相关模块,用于定义数据模型 from django.db import models +# gst: 导入Django时区工具,用于时间字段默认值 from django.utils.timezone import now +# gst: 导入国际化翻译工具(别名_),支持多语言显示 from django.utils.translation import gettext_lazy as _ +# gst: 导入blog应用的Article模型,用于关联评论与文章 from blog.models import Article # Create your models here. class Comment(models.Model): + """ + gst: 评论数据模型,存储博客文章的评论信息(支持评论回复功能) + 关联用户、文章模型,包含评论正文、时间、状态等核心字段 + """ + # 评论正文:文本字段,最大长度300字符,后台管理显示名称为“正文” body = models.TextField('正文', max_length=300) + # 创建时间:日期时间字段,支持国际化翻译,默认值为当前时间 creation_time = models.DateTimeField(_('creation time'), default=now) + # 最后修改时间:日期时间字段,支持国际化翻译,默认值为当前时间 last_modify_time = models.DateTimeField(_('last modify time'), default=now) + # 关联作者:外键关联Django用户模型,支持国际化翻译 + # 删除用户时,级联删除该用户的所有评论(CASCADE) author = models.ForeignKey( settings.AUTH_USER_MODEL, verbose_name=_('author'), on_delete=models.CASCADE) + # 关联文章:外键关联blog应用的Article模型,支持国际化翻译 + # 删除文章时,级联删除该文章的所有评论(CASCADE) article = models.ForeignKey( Article, verbose_name=_('article'), on_delete=models.CASCADE) + # 父评论:自关联外键,支持评论回复功能,支持国际化翻译 + # blank=True 允许表单提交为空,null=True 允许数据库存储NULL值 + # 删除父评论时,级联删除所有子评论(CASCADE) parent_comment = models.ForeignKey( 'self', verbose_name=_('parent comment'), blank=True, null=True, on_delete=models.CASCADE) + # 是否启用:布尔字段,支持国际化翻译,默认值为False(不显示) + # blank=False 和 null=False 表示该字段为必填项,不允许为空 is_enable = models.BooleanField(_('enable'), default=False, blank=False, null=False) class Meta: - ordering = ['-id'] - verbose_name = _('comment') - verbose_name_plural = verbose_name - get_latest_by = 'id' + ordering = ['-id'] # 数据查询默认排序:按主键倒序(最新评论在前) + verbose_name = _('comment') # 后台管理模型单数名称(支持国际化) + verbose_name_plural = verbose_name # 后台管理模型复数名称(与单数一致) + get_latest_by = 'id' # 使用latest()方法时,按id字段获取最新记录 def __str__(self): - return self.body + """gst: 模型实例的字符串表示,返回评论正文(方便后台管理查看)""" + return self.body \ No newline at end of file