Я хочу, чтобы Staffuser в Django не видел никаких суперпользователей
Прямо сейчас я применил этот код
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class MyUserAdmin(UserAdmin):
def get_fieldsets(self,request,obj=None):
if not obj:
return self.add_fieldsets
if request.user.is_superuser:
perm_fields = ('is_active','is_staff','is_superuser','groups','user_permissions')
return [(None, {'fields': ('email', 'password')}),
('Personal info', {'fields': ('first_name', 'last_name')}),
('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
('Important dates', {'fields': ('last_login', 'date_joined')}),
('Contact info', {'fields': ('contact_no',)})]
else:
perm_fields = ('is_active','is_staff')
return [(('Creds'),{'fields':('username','password')}),
(('Personal info'),{'fields':('first_name','last_name','email')})]
admin.site.unregister(User)
admin.site.register(User,MyUserAdmin)
Здесь все сотрудники могут видеть суперпользователя, когда я вхожу в систему как пользователь персонала
Но я хочу, чтобы штатный пользователь не мог видеть ни одного суперпользователя. Так что в этом случае штатный пользователь может видеть только 1 пользователя, который является "новым". а пользователь "admin", который является суперпользователем, должен быть скрыт
Как я могу это сделать?
Вам необходимо переопределить get_queryset
метод:
def get_queryset(self, request):
qs = super(MyUserAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(is_superuser=False)