在django中为员工创建自定义角色

时间:2017-11-23 02:22:01

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

我为Employee创建了一个角色模型,以便为员工分配控制权 整个应用程序基于他/她的角色。我的意思是,如果员工的角色是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

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

1 个答案:

答案 0 :(得分:1)

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