我创建了一个简单的项目,每个人都可以创建一个或多个Blog。 我想将此模型用于Post和评论:
class Post_comment(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField(_('object ID'))
content_object = generic.GenericForeignKey()
# Hierarchy Field
parent = models.ForeignKey('self', null=True, blank=True, default=None, related_name='children')
# User Field
user = models.ForeignKey(User)
# Date Fields
date_submitted = models.DateTimeField(_('date/time submitted'), default = datetime.now)
date_modified = models.DateTimeField(_('date/time modified'), default = datetime.now)
title = models.CharField(_('title'), max_length=60, blank=True, null=True)
post_comment = models.TextField(_('post_comment'))
如果是注释,则父项不为空。 因此,在大多数情况下,文本字段将包含一些文本。 我可以将此模型用于发布和评论吗? 这是一个很好的解决方案吗?
答案 0 :(得分:0)
技术上可行,但听起来像是一个糟糕的解决方案。
您要投放的大多数查询特定于发布或评论(示例:按日期排序所有帖子以显示在博客索引页面上,获取5个最新帖子的标题到在小部件上显示,获取5条最新评论以显示在“最新评论”小部件中,获取特定帖子的所有评论,获取用户发布的所有帖子等。因此,将它们放在同一个表中的成本始终为.filter(parent=None)
,这意味着代码可读性较差,性能损失较小。