diff --git a/src/comments/models.py b/src/comments/models.py index 7c3bbc8..269e9b7 100644 --- a/src/comments/models.py +++ b/src/comments/models.py @@ -7,33 +7,67 @@ from blog.models import Article # Create your models here. - +#田浩池 class Comment(models.Model): + """ + 博客评论系统核心模型 + 负责存储用户对文章的评论信息,支持评论回复功能 + """ body = models.TextField('正文', max_length=300) + # 问题1: 字段标签中英文混用,建议统一使用翻译 + # 建议改为: body = models.TextField(_('body'), max_length=300) creation_time = models.DateTimeField(_('creation time'), default=now) + # 创建时间,使用Django的now函数确保时区正确 last_modify_time = models.DateTimeField(_('last modify time'), default=now) + # 最后修改时间,初始值与创建时间相同 + # 问题2: 缺少自动更新逻辑,需要重写save方法或在业务逻辑中维护 author = models.ForeignKey( - settings.AUTH_USER_MODEL, + settings.AUTH_USER_MODEL, # 使用AUTH_USER_MODEL确保用户模型可定制 verbose_name=_('author'), - on_delete=models.CASCADE) + on_delete=models.CASCADE) # 用户删除时级联删除其所有评论 + # 问题3: 缺少related_name,建议添加 related_name='comments' article = models.ForeignKey( Article, verbose_name=_('article'), - on_delete=models.CASCADE) + on_delete=models.CASCADE) # 文章删除时级联删除相关评论 + # 问题4: 缺少related_name,建议添加 related_name='comments' parent_comment = models.ForeignKey( - 'self', + 'self', # 自关联,实现评论回复功能 verbose_name=_('parent comment'), blank=True, null=True, - on_delete=models.CASCADE) + on_delete=models.CASCADE) # 父评论删除时级联删除回复 + # 问题5: 缺少related_name,建议添加 related_name='replies' is_enable = models.BooleanField(_('enable'), - default=False, blank=False, null=False) + default=False, # 新评论默认未启用,可能需要审核 + blank=False, + null=False) + # 问题6: 字段命名建议改为 is_approved 或 is_active 更符合惯例 class Meta: - ordering = ['-id'] + ordering = ['-id'] # 按ID降序排列,最新的评论在前 + # 问题7: 建议改为 ['-creation_time'] 按创建时间排序更合理 verbose_name = _('comment') verbose_name_plural = verbose_name - get_latest_by = 'id' + get_latest_by = 'id' # 指定获取最新记录的依据字段 + # 问题8: 建议改为 get_latest_by = 'creation_time' + + def __str__(self): + """ + 模型对象的字符串表示 + 用于Django admin和其他显示场景 + """ return self.body + # 问题9: 评论内容可能很长,建议截断显示 + # 建议改为: return self.body[:50] + '...' if len(self.body) > 50 else self.body + def save(self, *args, **kwargs): + """ + 重写save方法以自动更新最后修改时间 + """ + if self.pk: # 如果是更新操作 + self.last_modify_time = now() + super().save(*args, **kwargs) + # 问题10: 原代码缺少此方法,last_modify_time无法自动更新 +