Скрытие одного из наборов полей User.ModelAdmin.fieldset при изменении роли пользователя в django

Здравствуйте, я хочу скрыть некоторые наборы полей в админке при изменении роли пользователя. В 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', 'profile_pic', 'created', 'updated']}],
    ]
    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.

Я попробовал несколько вариантов списка и некоторые трюки, как в приведенном ниже примере функции:

    def get_queryset(self, request):
        if request.user.role == 'CMS' and request.user.is_superuser==False:
            if not any('Permissions' in set for set in self.fieldsets):
                self.fieldsets += [['Permissions', {'fields': ['is_active',]}]]
            return self.model.objects.filter(
                role='CUSTOMER', is_staff=False, is_superuser=False
            )
        else:
            if not any('Permissions' in set for set in self.fieldsets):
                self.fieldsets += [['Permissions', {'fields': ['is_vendor', 'is_staff', 'is_superuser', 'is_active', 'groups', 'user_permissions']}]]
            return self.model.objects.all()

Это дает результаты на моей локальной машине, но не на рабочем сервере. На рабочем сервере секция permission повторяется, даже если добавлено условие then.

Это потому, что я добавляю это на list_user странице, а не на change_user странице администратора. Если да, то как я могу это исправить?

Как я могу этого добиться? Заранее спасибо

Вернуться на верх