发表评论用相同的模型
问题描述:
我已经创建了一个简单的项目,每个人都可以创建一个或多个博客。 我想用这个模型张贴和评论:如果评论父不为空发表评论用相同的模型
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'))
。 所以在大多数情况下,文本字段将包含一些文本。 我可以将这个模型用于发布和评论吗? 这是一个很好的解决方案吗?
答
其技术上可行,但听起来像一个不好的解决方案。
大多数你会遇到的查询的特定要么交或评论(例如:获得通过日期排序,显示博客索引页上的所有帖子,得到最近的5帖标题上显示一个小部件,获取5条最新评论以显示在“最新评论”小部件中,获取特定帖子的所有评论,获取用户发布的所有帖子等)。因此,将它们放在同一个表中的代价始终是.filter(parent=None)
,这意味着可读代码更少,性能会有所下降。
mmm所以我可以使用带有外键的Post模型以博客和具有通用外键的评论模型(因为我可以评论发布,图像,视频,ecc)。这是错的吗?你认为什么是更好的解决方案?谢谢^ _^ – xRobot 2010-05-25 15:59:23
是的,完全 - 2个模型。用FK发布博客和评论(也许使用django.contrib.comments?)与通用FK。 – 2010-05-26 10:32:49