我在 django 中有一个模型,其中有几个角色——普通用户、管理员和经理。他们每个人都可以做其他事情。下面的模型可以正常工作吗?
class Team(models.Model):
name = models.CharField('Name', max_length=128)
users = models.ManyToManyField(User)
admins = models.ManyToManyField(User)
managers = models.ManyToManyField(User)
def __str__(self):
return self.name
最佳答案
这可能行得通。如果角色数量很大,或者是动态的(如角色可以添加、删除、重命名、更新)。你可以引入一个三元关系,比如:
from django.conf import settings
class Role(models.Model):
name = models.CharField(max_length=128)
class Team(models.Model):
name = models.CharField('Name', max_length=128)
members = models.ManyToManyField(settings.AUTH_USER_MODEL, <b>through='Membership'</b>)
def __str__(self):
return self.name
class <b>Membership</b>(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
team = models.ForeignKey(Team, on_delete=models.CASCADE)
role = models.ForeignKey(Role, on_delete=models.PROTECT)
关于python - Django 模型中的角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56905228/