数据库模型最佳实践 - 即调查



有了这两个类,我总是怀疑哪个是"链接"它们的最佳实践(如果有的话)

问题

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字段。

相关内容

  • 没有找到相关文章

最新更新