所以,这就是事情。 该应用程序应该只与一个数据库一起使用,因此每个数据都存储在同一个地方。 我的问题在于如何使以下关系工作: 用户应该参与多个流程,流程应该有多个用户,并且在每个流程上,他们(用户)必须具有特定的角色。 因此,有时User对象可以参与具有角色X的进程A和具有角色Y的进程B 所以我写了这段代码:
models.py
from django.db import models
from django.contrib.auth.models import User
class Process(models.Model):
def __str__(self):
return self.name
party = models.ManyToManyField(User, through='Role',
through_fields=('process', 'user'))
name = models.CharField(max_length=50)
class Role(models.Model):
def __str__(self):
return self.type
user = models.ForeignKey(User)
process = models.ForeignKey(Process)
X = 'X'
Y = 'Y'
Z = 'Y'
ROLE_CHOICE = (
(X, X),
(Y, Y),
(Z, Z),
)
type = models.CharField(max_length=1, choices=ROLE_CHOICE,
default=X)
问题是,角色应该仅限于3个选项,但是当我通过角色创建新实例时,角色对象(X,Y和Z)即使已经存在也会继续创建。 还有另一种方式可以解决所有这种关系吗?
谢谢!