我正在学习Django,我发现自己处于以下场景:我有一个fragment
模型,其中包含各种字段。其中一个是project
。另一个是key_personnel
,它定义了每个关键人员在项目中扮演的角色。
如何在Django中最好地模拟这种情况?我似乎无法找到关于如何建模这种情况的例子。这是我的key_person_roles
:
models.py
感谢您的帮助。
答案 0 :(得分:1)
我使用自定义through
模型/表格来表示Person
和Project
之间的m2m关系(*拒绝使用骆驼和蛇的混合情况)。然后,此模型可以ForeignKey
到Role
。这样,人与项目之间的每个关系都以(可重用!)角色为特征:
class Person(models.Model):
....
# model to capture the different types of roles
class Role(models.Model):
name = models.CharField(max_length=100)
class Project(models.Model):
# specify custom through model
key_persons = models.ManyToManyField('Person', through='ProjectPerson')
# m2m-model for project-person relation
class ProjectPerson(models.Model):
person = models.ForeignKey('Person', ...)
project = models.ForeignKey('Project', ...)
# such a relation has a role!
role = models.ForeignKey('Role', ...)
class Meta:
unique_together = (('person', 'project'),)