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