有了这两个类,我总是怀疑哪个是"链接"它们的最佳实践(如果有的话)
问题
class Question(models.Model):
text = models.CharField('Question',max_length=120)
created = models.DateTimeField(auto_now_add=True)
opens = models.DateTimeField()
closes = models.DateTimeField()
答
class Answer(models.Model):
text = models.CharField('Answer',max_length=120)
votes = models.IntegerField(default=0)
错误 - 我可以将此行添加到答案(这是一个复制/粘贴错误):
answers = models.ForeignKey(Answer)
编辑:
answers = models.ManyToManyField(Answer)
我可以将这一行添加到答案中:
question = models.ForeignKey(Question)
我想知道这是否真的无关紧要,或者我应该考虑不同的方面。
谢谢!
class Question:
answer = models.ForeignKey(Answer)
"这个特定的问题只有一个可能的答案"。
class Answer:
question = models.ForeignKey(Question)
"这个答案只属于一个特定的问题,但这个问题可能有多个单独的答案"
class Answer:
question = models.ManyToManyField(Question)
"这个特殊的答案是对多个问题的答案。所以问题可以有多个单独的答案"
class Question:
answers = modes.ManyToManyField(Answer)
"这个问题有多个不同的答案。答案也可以属于多个问题。[最佳方法]
一个问题必须有答案。您(通常)不会回答多个问题,相反,一个答案可以回答一个特定问题,但可能会有多个答案(例如来自不同的用户)。因此我会选择 4 .
answers = models.ForeignKey(Answer)
question = models.ForeignKey(Question)
这些不是等价的。第一个(假设你的意思是第一个应该在Question
意味着一个问题只有一个答案,但一个答案有多个问题 - 猜测这不是你想要的。
第二个意味着一个答案只有一个问题,并且问题将有多个答案,这可能是你想要的。默认情况下,这会在"问题"中添加一个包含所有问题答案的answer_set字段。