【发布时间】:2022-01-23 16:17:24
【问题描述】:
我有一个问题:我的项目中有员工应用程序,我希望员工拥有不同的头衔,例如销售代表、经理等,我的观点会因员工的头衔而有所不同。现在我有模型标题(title_code,title_name),但我觉得它可以用 Django 的内置模块完成。那么我用什么来构建层次结构呢?组、角色或权限?
【问题讨论】:
标签: django
我有一个问题:我的项目中有员工应用程序,我希望员工拥有不同的头衔,例如销售代表、经理等,我的观点会因员工的头衔而有所不同。现在我有模型标题(title_code,title_name),但我觉得它可以用 Django 的内置模块完成。那么我用什么来构建层次结构呢?组、角色或权限?
【问题讨论】:
标签: django
如果您不需要每个员工头衔的任何特定权限,那么选择将非常简单,如下所示
示例示例
from django.db import models
class Employee(models.Model):
SALES_MANAGER = 1
HR_MANAGER = 2
ENGINEERING_MANAGER = 3
ROLE_CHOICES = (
(SALES_MANAGER, 'Sales Manager'),
(HR_MANAGER, 'HR Manager'),
(ENGINEERING_MANAGER, 'Manager'),
)
employee_title = models.CharField(max_length=100, choices=ROLE_CHOICES, default='Manager')
但请注意,如果您想添加新的员工头衔,则需要重新运行迁移。如果您需要避免这种情况,那么组会是更好的选择。
from django.db import models
from django.contrib.auth.models import Group
class Employee(models.Model):
employee_title = models.ManyToManyField(Group)
使用组,您无需直接从管理面板进行任何迁移即可创建新条目。
【讨论】:
django 组、角色和权限系统用于在管理面板中允许或拒绝操作,因此这三个组件协同工作。
在第一个选项中,您可以为每个用户创建不同的角色,并为每个用户授予一些权限,但是如果您有具有相同权限的用户组,您可以将他们重新组合到一个组中。欲了解更多信息,请查看此https://docs.djangoproject.com/en/4.0/topics/auth/default/#permissions-and-authorization
【讨论】: