3

谁能帮我弄清楚如何在 Django 的 ORM 中建模以下关系?

我有一群人。这些人可能属于零个或多个组织。对于一个人所属的每个组织,该人在该组织内都有一个头衔。

例如,John 是 ACME Corp 和 EVIL Inc. 的成员。在 ACME Corp 中,他是销售副总裁,而在 EVIL Inc 中,他是首席执行官。

我知道这听起来不切实际,但这个应用程序适用于一个行业中的非营利组织,许多人属于多个不同的组织/资助机构/委员会等。

我已经让人员 - > 组织部分工作(很容易,因为它只是一个 ManyToManyField),但我不知道如何为外键指向的每一行实现特定标题。

4

1 回答 1

4

您可以使用自定义through模型为单个关系保存额外数据:

class Person(models.Model):
    organisations = models.ManyToManyField(Organisation, through='Position')

class Position(models.Model):
    person = models.ForeignKey(Person)
    organisation = models.ForeignKey(Organisation)
    title = models.CharField(max_length=50)

还要检查有关through模型的文档。

于 2013-08-09T10:15:09.863 回答