Django三种模式之间的关联

时间:2016-12-11 16:30:57

标签: django database-design django-models

我有这三种模式:

  • 项目。
  • 作用。

使用Django的模型系统,如何表示一个人参与具有特定角色的特定项目的事实?

一般问题:处理" 三元关联"的正确方法是什么?使用Django?

1 个答案:

答案 0 :(得分:1)

我会使用m2m关系的中间模型并在那里添加一个字段 像这样:

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)