1๐
โ
Iโd use a custom through
model/table for the m2m relation between Person
and Project
(*refusing to use your mix of camel and snake case). This model can then have a ForeignKey
to a Role
. This way, every relation between a person and project is characterized by a (reusable!) 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'),)
๐คuser2390182
Source:stackexchange.com