2010-05-25 43 views
0

我已经创建了一个简单的项目,每个人都可以创建一个或多个博客。 我想用这个模型张贴和评论:如果评论父不为空发表评论用相同的模型

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

其技术上可行,但听起来像一个不好的解决方案。

大多数你会遇到的查询的特定要么交或评论(例如:获得通过日期排序,显示博客索引页上的所有帖子,得到最近的5帖标题上显示一个小部件,获取5条最新评论以显示在“最新评论”小部件中,获取特定帖子的所有评论,获取用户发布的所有帖子等)。因此,将它们放在同一个表中的代价始终是.filter(parent=None),这意味着可读代码更少,性能会有所下降。

+0

mmm所以我可以使用带有外键的Post模型以博客和具有通用外键的评论模型(因为我可以评论发布,图像,视频,ecc)。这是错的吗?你认为什么是更好的解决方案?谢谢^ _^ – xRobot 2010-05-25 15:59:23

+0

是的,完全 - 2个模型。用FK发布博客和评论(也许使用django.contrib.comments?)与通用FK。 – 2010-05-26 10:32:49