# 赵瑞萍:评论模型模块,定义评论数据结构及关联关系 # 功能:存储用户对文章的评论信息,支持嵌套回复,包含评论内容、时间、作者、关联文章等核心数据 # 特性:支持国际化显示、级联删除关联数据、默认排序规则及评论状态管理 # 赵瑞萍:导入Django核心模块,提供配置、数据库操作、时间处理和国际化支持 from django.conf import settings # 获取项目配置(如用户模型) from django.db import models # 数据库模型基类及字段类型 from django.utils.timezone import now # 获取带时区的当前时间,用于时间字段默认值 from django.utils.translation import gettext_lazy as _ # 国际化翻译工具,实现多语言显示 # 赵瑞萍:导入关联模型,评论需与博客文章建立关联关系 from blog.models import Article # 博客文章模型,评论将关联到具体文章 class Comment(models.Model): """ 赵瑞萍:评论模型类,映射数据库中存储评论的表结构 记录评论的内容、时间、作者、关联文章、父评论及显示状态等信息 支持评论嵌套回复和国际化管理 """ # 赵瑞萍:评论正文字段,限制最大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) # 赵瑞萍:评论作者外键,关联项目配置的用户模型 # 级联删除:当用户账号被删除时,其发布的所有评论也会被删除 author = models.ForeignKey( settings.AUTH_USER_MODEL, verbose_name=_('author'), # 国际化字段名:作者 on_delete=models.CASCADE ) # 赵瑞萍:关联文章外键,评论属于某篇具体文章 # 级联删除:当文章被删除时,其下所有评论也会被删除 article = models.ForeignKey( Article, verbose_name=_('article'), # 国际化字段名:文章 on_delete=models.CASCADE ) # 赵瑞萍:父评论自关联外键,实现评论嵌套回复功能 # 允许为空:顶级评论(直接评论文章)无父评论 # 级联删除:当父评论被删除时,其所有回复评论也会被删除 parent_comment = models.ForeignKey( 'self', verbose_name=_('parent comment'), # 国际化字段名:上级评论 blank=True, # 表单提交时允许为空 null=True, # 数据库中允许为NULL on_delete=models.CASCADE ) # 赵瑞萍:评论显示状态字段,用于评论审核功能 # 默认值为False(需审核后显示),不允许为空 is_enable = models.BooleanField( _('enable'), # 国际化字段名:是否启用 default=False, blank=False, null=False ) # 赵瑞萍:模型元数据配置,定义模型的整体行为和显示规则 class Meta: ordering = ['-id'] # 默认排序:按ID降序,最新评论优先显示 verbose_name = _('comment') # 模型单数显示名称(国际化) verbose_name_plural = verbose_name # 模型复数显示名称(与单数相同) get_latest_by = 'id' # 使用latest()方法时,按ID字段判断最新记录 # 赵瑞萍:定义模型实例的字符串表示形式 # 在后台管理和调试时,直观显示评论内容(取正文作为标识) def __str__(self): return self.body