0
我在学习Django,并且在以下场景中发现自己:我有一个带有各种字段的project
模型。其中之一是key_personnel
。另一个是key_person_roles
,它定义了每个关键人员在项目中扮演的角色。只有当它是另一个模型的一部分时,才将模型字段指定给模型
- 一个项目可以有各种关键人员,每个关键人员可以有不同的角色。
- 主要人员没有默认角色,他们可以在不同的项目上扮演任何角色。
我该如何在Django中最好地模拟此场景?我似乎无法找到如何对这种情况建模的例子。这里是我的models.py
:
from django.db import models
from phonenumber_field.modelfield import PhoneNumberField
class Key_Person(models.Model):
name = models.CharField(max_length=200)
designation = models.CharField(max_length=100)
email = models.EmailField()
contact = PhoneNumberField()
class Meta:
ordering = ['name']
verbose_name_plural = "Key Persons"
def __unicode__(self):
return self.name
class Key_Person_Role(models.Model):
role = models.CharField(max_length=100)
class Meta:
verbose_name_plural = 'Key Person Roles'
def __unicode__(self):
return self.role
class Project(models.Model):
title = models.CharField(max=150)
description = models.TextField()
# more fields here ...
key_persons = models.ManyToManyField(Key_Person)
# What I want is to assign a role to each key person above.
key_person_roles = models.ManyToManyField(Key_Person_Role)
def __unicode__(self):
return self.title
我感谢您的帮助。
感谢您的帮助。这完美的作品!对于管理员部分,[我在文档中找到了这个](https://docs.djangoproject.com/en/1.10/ref/contrib/admin/#working-with-many-to-many-intermediary-models)。 – engineervix
我不得不从'unique_together(('''','project'),)''改为'unique_together =(('''','project'),') – engineervix
是的,那是一个错字。更正! – schwobaseggl