2010-05-25 46 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