考虑一下我们有两个Django模型,问答。 一个问题可以有很多答案,但答案只能有一个与之相关的问题。 我们可以将关系建模为:
class Question(models.Model):
text = models.CharField(...)
answers = models.ManyToManyField('Answer')
class Answer(models.Model):
text = models.CharField(...)
我们也可以将其建模为:
class Question(models.Model):
text = models.CharField(...)
class Answer(models.Model):
text = models.CharField(...)
question = models.ForeignKey('Question')
Django经理允许我们向后关注ForeignKey和ManyToManyField。 我们应该使用什么样的模型结构?
答案 0 :(得分:1)
one-to-many
当然。你可以使用多对多关系来实现同样的目标,但是你会使事情变得复杂并且你会为性能打击付出代价。
从数据库建模的角度考虑它(忘记ORM)。您为什么要这样做:question -> many-to-many-manager -> answers
而不是:question -> answers
。
答案 1 :(得分:1)
class Question(models.Model):
text = models.CharField(...)
answers = models.ManyToManyField('Answer')
上述模型说,答案可以有很多问题,而问题可以有很多答案。 部分错误和部分正确。
多对多关系:您有很多兄弟姐妹,并且您的一个 兄弟姐妹有很多兄弟姐妹。
class Answer(models.Model):
text = models.CharField(...)
question = models.ForeignKey('Question')
现在,此模型表明,问题可以有多个答案,而答案只能有一个问题。
一对多关系:一个人可以有很多数字,但是不能将一个数字分配给很多人
我认为这更正确。