Как скрыть "набор полей" при изменении роли пользователя в админке
Здравствуйте, я хочу скрыть некоторые наборы полей в админке при изменении роли пользователя.
В get_queryset() я изменяю набор запросов, если role == 'CMS' я также хочу скрыть Permission набор полей для той же роли.
Вот моя админка:
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import Permission
from .models import BankAccount
from addresses.models import Address
User = get_user_model()
class AddressInline(admin.TabularInline):
model = Address
extra = 0
@admin.register(User)
class UserAdmin(BaseUserAdmin):
list_display = (
'id', 'full_name', 'email', 'gender', 'role',
)
list_filter = (
'gender', 'is_staff', 'is_superuser', 'is_active',
)
list_display_links = (
'full_name', 'email',
)
search_fields = (
'email', 'first_name', 'last_name', 'phone_number',
)
readonly_fields = (
'created', 'updated',
)
ordering = ('first_name', 'email', 'last_name',)
fieldsets = (
('Credentials', {'fields': ('email', 'phone_number', 'password')}),
('Info', {'fields': ('first_name', 'last_name', 'gender', 'role', 'otp', 'profile_pic', 'created', 'updated')}),
('Permissions', {'fields': ('is_vendor', 'is_staff', 'is_superuser', 'is_active', 'groups', 'user_permissions')}),
)
add_fieldsets = (
('Credentials', {'fields': ('email', 'phone_number', 'password1', 'password2')}),
('Info', {'fields': ('first_name', 'last_name', 'gender', 'role', 'profile_pic')}),
('Permissions', {'fields': ('is_vendor', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
)
inlines = (AddressInline,)
def full_name(self, obj=None):
return f'{obj.first_name} {obj.last_name}'
def get_queryset(self, request):
if request.user.role == 'CMS':
return self.model.objects.filter(
role='CUSTOMER', is_staff=False, is_superuser=False
)
else:
return self.model.objects.all()
admin.site.register(Permission)
admin.site.register(BankAccount)
В этой админке, в get_queryset() здесь я меняю кверисет, если роль "CMS".
То же самое, я не хочу отображать раздел Permission из опции fieldsets.
Как я могу этого добиться? Заранее спасибо