2014-03-02 55 views
0

我有一个适用于论坛的应用程序。它有三类标签,问题答案Django中的所有其他应用程序的评论应用程序

型号:

class Tag(models.Model): 
    tag_name = models.CharField(max_length=100) 
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False) 
    updated = models.DateTimeField(auto_now_add=True, auto_now=False) 
    description = models.TextField() 

    def __unicode__(self): 
     return smart_unicode(self.tag_name) 

class Question(models.Model): 
    short_description = models.CharField(max_length=250) 
    description = models.TextField() 
    asked_by = models.ForeignKey(User) 
    tags = models.ManyToManyField(Tag) 
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False) 
    updated = models.DateTimeField(auto_now_add=True, auto_now=False) 

    def __unicode__(self): 
     return smart_unicode(self.short_description) 

class Answer(models.Model): 
    description = models.TextField() 
    for_question = models.ForeignKey(Question) 
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False) 
    updated = models.DateTimeField(auto_now_add=True, auto_now=False) 

    def __unicode__(self): 
     return smart_unicode(self.description) 

我也想对此有意见或问题答案等也为部分我的应用程序的。达到此目的的最佳方法是什么?我的意思是,为这个用例设计django模型的正确方法是什么?我是否必须为此使用内容类型

+0

Django有其内置评论模型,https://docs.djangoproject.com/en/dev/ref/contrib/comments/它可以满足您的需求吗? – iMom0

+0

我想,它已被弃用。但我检查了网址,并没有像这样'评论框架已被弃用,不再支持。大多数用户将更好地使用自定义解决方案。你能以另一种方式让我看看吗? – Robin

+0

罗宾,你是怎么知道下面的答案的? – halfer

回答

1

您是否想过在models.py中添加ForeignKey类Comment?

的模型是非常简单的:

class Comment(models.Model): 
    *attached_to* = models.ForeignKey(CONTENT) 
    body = models.TextField() 
    parent = models.ForeignKey('self', related_name="children") 

other fields... 

你会使用相同的意见为每种类型的内容或你想为每种类型的内容独特的行为?

对于一个应用程序,上述模型是最简单的。

对于多个应用程序,你会更好 - 我认为 - 打破评论成为一个独立的应用程序,它在ForeignKey的相应的应用调用(Foreign key from one app into another in Django

如果你正在寻找一个普遍的评论系统,上面的模型可以工作,但你可能想要查看GenericForeignKey(Django Model field with multiple types?)。

相关问题