【问题标题】:Django groups, roles and permissionsDjango 组、角色和权限
【发布时间】:2022-01-23 16:17:24
【问题描述】:

我有一个问题:我的项目中有员工应用程序,我希望员工拥有不同的头衔,例如销售代表、经理等,我的观点会因员工的头衔而有所不同。现在我有模型标题(title_code,title_name),但我觉得它可以用 Django 的内置模块完成。那么我用什么来构建层次结构呢?组、角色或权限?

【问题讨论】:

    标签: django


    【解决方案1】:

    如果您不需要每个员工头衔的任何特定权限,那么选择将非常简单,如下所示

    示例示例

    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)
    

    使用组,您无需直接从管理面板进行任何迁移即可创建新条目。

    【讨论】:

    • 是的,这就是我想要得到的答案。谢谢!
    【解决方案2】:

    django 组、角色和权限系统用于在管理面板中允许或拒绝操作,因此这三个组件协同工作。

    1. 如果在您的应用程序中所有这些类型的用户都可以在管理面板中访问,我建议您使用组、角色和权限系统
    2. 但如果您的用户无权访问管理面板,您可以避免使用它。

    在第一个选项中,您可以为每个用户创建不同的角色,并为每个用户授予一些权限,但是如果您有具有相同权限的用户组,您可以将他们重新组合到一个组中。欲了解更多信息,请查看此https://docs.djangoproject.com/en/4.0/topics/auth/default/#permissions-and-authorization

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-15
      • 2019-07-29
      • 2023-03-15
      • 2010-12-23
      • 2017-09-13
      • 1970-01-01
      • 2017-08-15
      • 2014-02-03
      相关资源
      最近更新 更多