我有一个论坛的应用程序。它有三个类标记,问题和答案。
模型:
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 :(得分:1)
您是否考虑过在models.py中添加一个ForeignKey类注释?
该模型非常简单:
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?)。