Python Django管理面板权限:阻止用户组添加更多用户
我想限制我的工作者用户的管理面板-不希望他们创建用户或删除某些类型的模型,例如 下面是Python Django管理面板权限:阻止用户组添加更多用户,python,django,Python,Django,我想限制我的工作者用户的管理面板-不希望他们创建用户或删除某些类型的模型,例如 下面是models.py中设置自定义用户的一些代码,以及添加用户的post\u save信号 请注意,我设置了default_permissions=(),这样用户就不会从任何权限开始,但是我授予他们name=workers组的权限,该组不包括myapp.myuser\u add,因此他们在登录管理控制台时不应该能够添加更多用户 # models.py from django.db import models fro
models.py
中设置自定义用户的一些代码,以及添加用户的post\u save
信号
请注意,我设置了default_permissions=()
,这样用户就不会从任何权限开始,但是我授予他们name=workers
组的权限,该组不包括myapp.myuser\u add
,因此他们在登录管理控制台时不应该能够添加更多用户
# models.py
from django.db import models
from django.contrib.auth.models import (
BaseUserManager, AbstractBaseUser, PermissionsMixin, Group
)
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def apply_worker_group(sender, instance=None, created=False, **kwargs):
if instance.is_worker:
try:
worker_group = Group.objects.get(name='workers')
if instance not in worker_group.user_set.all():
instance.groups.add(worker_group)
instance.save()
except Group.DoesNotExist:
pass
class MyUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_worker = models.BooleanField(default=False)
# ... skipping a bunch of stuff
class Meta:
default_permissions = () # (!) ALL USERS HAVE NO PERMS TO START
@property
def is_staff(self):
# so workers can log into the admin panel
return self.is_admin or self.is_worker
然后在myadmin.py
中:
# admin.py
from django.contrib.auth.admin import UserAdmin
from django.contrib import admin
from myapp.models import MyUser
class MyUserAdmin(UserAdmin):
pass
class MyAdminSite(admin.AdminSite):
pass
admin_site = MyAdminSite(name='myadmin')
admin_site.register(MyUser, MyUserAdmin)
但是,当我使用is_worker=True
在我的超级用户帐户下创建一个用户时,我仍然可以使用创建的用户登录到管理面板并创建更多用户!这不是我想要的
对于如何使用这样的组限制用户权限,有什么建议吗