【发布时间】: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