我使用django-guardian提供基于角色的权限,使用django-userena进行用户分析。我有三种用户Admin, sub-admin, employee。管理员可以添加下级管理员,下级管理员可以添加员工。我在guardian中为三种用户类型创建了三个组。当用户注册时,我为该用户分配一个员工组。
class Profile(UserenaBaseProfile):
class Meta:
permissions = (
( "add_admin", "Can add admin" ),
( "add_subadmin", "Can add sub admin" ),
( "add_employee", "Can add employee" ),
)
user = models.OneToOneField(User,
unique=True,
verbose_name='user',
related_name='profile')
first_name = models.CharField('First name',max_length=100,blank=False,null=False)
def save(self, *args, **kwargs):
super(Profile, self).save(*args, **kwargs)
employee_group = Group.objects.get('employee')
self.groups.add(employee_group)
我想使用Django Admin,并赋予Admin和sub-admin更改用户组的能力。
我如何使用AdminModel在Admin面板中添加下拉或单选按钮,以便我可以更改用户的组。或者有更好的方法来做到这一点。
如果您正在查找管理操作,则必须编写一些自定义管理操作
更新当您创建管理员时,您可以检查当前request.user
是否能够看到该操作。我们可以这样说,如果用户不是管理员,那么自定义动作方法应该返回None
或仅返回pass
。有一个应用程序获得当前用户在代码的任何地方,当你没有访问你当前的用户请求,它被称为django-cuser
。当您需要确定use是admin还是sub-admin来为他提供自定义操作时,它将适合您。
Start from 有条件地启用或禁用操作