0

我找不到两个相关模型中哪一个应该具有 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)
4

1 回答 1

2

从技术上讲,您可以ManyToManyField在任一模型上添加一个并获得相同的结果,因此决定通常归结为哪个模型更有意义,这通常是一个非常主观的决定。

我通常通过确定关系更完整的模型来决定:成员集对 aGroup比组集对 a 更重要Person吗?如果是这样,关系字段应该在Group模型上。

于 2013-08-01T00:31:46.590 回答