Right now i have applied this code
JavaScript
x
26
26
1
from django.contrib import admin
2
from django.contrib.auth.admin import UserAdmin
3
from django.contrib.auth.models import User
4
5
class MyUserAdmin(UserAdmin):
6
def get_fieldsets(self,request,obj=None):
7
if not obj:
8
return self.add_fieldsets
9
10
if request.user.is_superuser:
11
perm_fields = ('is_active','is_staff','is_superuser','groups','user_permissions')
12
13
return [(None, {'fields': ('email', 'password')}),
14
('Personal info', {'fields': ('first_name', 'last_name')}),
15
('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
16
('Important dates', {'fields': ('last_login', 'date_joined')}),
17
('Contact info', {'fields': ('contact_no',)})]
18
else:
19
perm_fields = ('is_active','is_staff')
20
21
return [(('Creds'),{'fields':('username','password')}),
22
(('Personal info'),{'fields':('first_name','last_name','email')})]
23
24
admin.site.unregister(User)
25
admin.site.register(User,MyUserAdmin)
26
Here all the staff user are able to see superuser when i am logged in as staffuser
But I want that the staffuser wont be able to see any superuser. so in this case staffuser can only view 1 user which is “new” and “admin” user which is superuser, should be hidden
How can i do that ?
Advertisement
Answer
You need to override get_queryset
method:
JavaScript
1
7
1
def get_queryset(self, request):
2
qs = super(MyUserAdmin, self).get_queryset(request)
3
if request.user.is_superuser:
4
return qs
5
6
return qs.filter(is_superuser=False)
7