我有这三个模型:
- 人员。
- 项目。
- 角色。
使用Django的模型系统,如何表示一个人参与特定项目并具有特定角色的事实?
一般问题:如何使用Django处理“三元关联”?
我有这三个模型:
使用Django的模型系统,如何表示一个人参与特定项目并具有特定角色的事实?
一般问题:如何使用Django处理“三元关联”?
class Role(models.Model):
name = models.CharField(max_lenth=32)
class Project(models.Model):
name = models.CharField(max_lenth=32)
class PersonProject(models.Model):
person = models.ForeignKey('.Person')
project = models.ForeignKey(Project)
role = models.ForeignKey(Role)
class Person(models.Model):
projects = models.ManyToManyField(Project, through=PersonProject)
Person
和Project
都有一个m2m字段,关系是双向的。如果你在一个模型上添加了该字段,那么你不必在另一个模型上再添加一次。如果你想让Person
在单个Project
上拥有多个角色,你可以将role
ForeignKey也改为m2m字段,但除此之外没有必要这样做。 - wanaryytel