我为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
当管理员创建员工时,用户名,密码和电子邮件,管理员提供的将与员工一起创建新的用户实例
答案 0 :(得分:1)
Django附带了群组和权限,可以提供您正在寻找的所有内容。 这可能会对您有所帮助 - How do I use Django groups and permissions? Django文档 - https://docs.djangoproject.com/en/1.11/topics/auth/