【问题标题】:create custom role in django to employees在 Django 中为员工创建自定义角色
【发布时间】:2017-11-23 02:22:01
【问题描述】:

我为员工创建了一个角色模型,以便分配员工来控制 基于他/她的角色的整个应用程序。我的意思是,如果员工的角色被赋予 can_create_only,那么员工应该能够创建库存、订单、物品等,如果员工被赋予 can_create_edit_and_delete,那么员工就像是管理员之一等等。为此我设计了模型如下,但我想知道处理这种情况的最佳方法是什么,为什么?

我应该使用中间件还是装饰器方式?谁能举个例子好吗?

class Role(models.Model):
    name = models.CharField(max_length=100, blank=False, null=False)

    class Meta:
        verbose_name = 'Role'
        verbose_name_plural = 'Roles'


class Employee(models.Model):
    office = models.ForeignKey(
        OfficeSetup, blank=False, null=False, on_delete=models.CASCADE)
    name = models.CharField(max_length=150, blank=False, null=False)
    designation = models.ForeignKey(Designation, blank=False, null=False)
    section = models.ForeignKey(DepartmentSetup, blank=True, null=True)
    phone_number = models.CharField(max_length=150, blank=True, null=True)
    mobile_number = models.CharField(max_length=150, blank=True, null=True)
    email = models.EmailField(max_length=150, blank=False, null=False)
    gender = models.CharField(
        max_length=4, choices=GENDER, blank=True, null=True)
    role = models.ForeignKey(Role, blank=True, null=True)
    username = models.CharField(max_length=100, blank=False, null=False)
    password = models.CharField(max_length=100, blank=False, null=False)
    avatar = models.ImageField(
        null=True, blank=True, upload_to=upload_employee_image_path)

    class Meta:
        verbose_name = 'Employee'
        verbose_name_plural = 'Employees'

    def __str__(self):
        return self.name

当管理员创建员工时,用户名、密码和邮箱,管理员提供的将与员工一起创建一个新的用户实例

【问题讨论】:

    标签: python django python-3.x django-models django-middleware


    【解决方案1】:

    Django 带有组和权限,它提供了您正在寻找的所有内容。 这可能会对您有所帮助 - How do I use Django groups and permissions? Django 文档 - https://docs.djangoproject.com/en/1.11/topics/auth/

    【讨论】:

    • 你能给我举个例子吗?我觉得难以理解的文档
    • 如果我没记错的话,文档只显示为特定模型设置权限,但我的用例是一次为所有模型设置权限
    猜你喜欢
    • 2021-06-24
    • 2018-12-11
    • 2016-06-06
    • 2019-07-20
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    相关资源
    最近更新 更多