python - Django 模型中的角色

标签 python django database django-models many-to-many

我在 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/

相关文章:

python - 如何将django web应用程序转换为桌面应用程序

python - Django 类型错误 : authenticate() takes exactly 0 arguments (3 given)

database - Select Count(*) 在 postgres 数据库上从 <30s 增加到 ~8 分钟 - 391K 行

python - 当窗口大小调整时,如何让 Kivy 刷新小部件的大小?

python - 不准确的离群值与箱线图中的离群值不匹配

python - Python 函数如何处理您传入的参数类型?

mysql - key 1 的重复条目 '2014-02-28' 错误代码 : 1062

python - 如何使用 Matplotlib 将中心轴放在所有图像图周围?

python - 在 Python 中动态生成导入,专门针对 Django 模型

php - 需要一些关于数据库模式设计的建议