我有允许三种类型用户访问管理界面的情况: - 管理员 - 主管 - 代理
这是一种情况层次结构,管理员是一个(超级用户),它创建了主管,主管创建了代理。
他们都可以使用不同的授权登录到 django admin。
登录由 'django.contrib.auth' 管理,默认模型 auth_user (.
from django.contrib.auth.models import User
class Supervisor(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
e_mail = models.EmailField(max_length=60, db_column='E-Mail',blank=True)
...other fields....
class Admin(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
e_mail = models.EmailField(max_length=60, db_column='E-Mail',blank=True)
...other fields...
但有个问题。如果我允许主管创建代理,则意味着我必须添加授权以添加和更改表 USER。这很危险,任何主管都可能成为超级用户,删除用户等等......
我该如何解决这个问题?是否有可能允许主管创建一个代理,而不会使他变得危险?
谢谢
编辑
我有一个疑问......在models.py的定义类期间我写了这个方法:
def save(self):
self.user.is_staff = True
self.user.save()
super(Agent, self).save()
在 Java 中,EJB 的方法是事务/原子的(提交是自动的)......在 django 中,我必须调用方法 save()。
这是一个和之前不同的问题......