我找不到两个相关模型中哪个应具有M2M字段的逻辑?这是Django教程的一个例子
class Person(models.Model):
name = models.CharField(max_length=128)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
如果我在Person而不是Group中定义M2M字段会有什么不同?
class Person(models.Model):
name = models.CharField(max_length=128)
groups = models.ManyToManyField(Person, through='Membership')
class Group(models.Model):
name = models.CharField(max_length=128)
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
答案 0 :(得分:2)
从技术上讲,您可以在任一模型上添加ManyToManyField
并获得相同的结果,因此决策通常归结为它更有意义的模型,这通常是一个非常主观的决定。
我通常通过确定哪个模型的关系更为完整来决定:对于Group
而言,哪个成员集对Person
更为重要?如果是这样,关系字段应该放在Group
模型上。