【发布时间】:2017-10-20 02:48:10
【问题描述】:
在遗留数据库中,项目之间的多对多关系、项目中的人员以及他们在该项目中的角色通过三向联结表表示,如下所示:
如何用 Django 模型表示这些数据?
我正在尝试编写一个模型,其中project.manager 将返回与project_id 的manager 角色配对的person 实例列表。到目前为止,我得到的最接近的是通过Rolepersonproject 中的两个不同字段使用models.ManyToManyField,但这只会给我与该项目相关的角色和人员,而不是这些人扮演的角色。我该怎么做?这是自定义管理器、ManyToManyField、模型方法或自定义 SQL 的工作吗?
manage.py inspectdb 给了我这样的模型类来使用:
class Project(models.Model):
project_id = models.AutoField(db_column='project_id', primary_key=True)
class Role(models.Model):
role_id = models.AutoField(db_column='role_id', primary_key=True)
class Person(models.Model):
person_id = models.AutoField(db_column='person_id', primary_key=True)
class Rolepersonproject(models.Model):
project_id = models.ForeignKey(Project, models.DO_NOTHING, db_column='project_id')
role_id = models.ForeignKey(Role, models.DO_NOTHING, db_column='role_id')
person_id = models.ForeignKey(Person, models.DO_NOTHING, db_column='person_id')
【问题讨论】:
标签: python django django-models