任何人都可以帮我弄清楚如何在Django的ORM中建模以下关系吗?
我有一群人。这些人可能属于零个或多个组织。对于一个人所属的每个组织,该人在该组织内拥有所有权。
例如,John是ACME公司和EVIL公司的成员。在ACME公司内,他是销售副总裁,而在EVIL公司内,他是首席执行官。
我知道这听起来不切实际,但这个应用程序适用于许多人属于多个不同组织/资助机构/委员会等行业的非盈利组织。
我有这个人 - >组织部分工作(很简单,因为它只是一个ManyToManyField),但我不知道如何为外键指向的每一行实现特定的标题。
答案 0 :(得分: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
models上的文档。