Ключ 'fieldname' не найден в 'ModelForm'. Django 3.2

Я пытаюсь переопределить функцию get_form в классе admin в Django 3.2. Я определил пользовательское разрешение для определенного пользователя, который может просматривать только некоторые определенные поля модели. Все работает нормально, но когда я пытаюсь перейти к форме изменения объекта с не разрешенными пользователями, я не могу просмотреть форму изменения как суперпользователь, пока другой пользователь не закроет форму изменения. То есть, по сути, переопределение метода get_form не работает в одно и то же время для разных типов пользователей. Кстати, у меня не было определенного представления, потому что я использую только шаблон администратора в качестве представления.

Я новичок в django, поэтому не знаю, правильно ли я это делаю...

Вот класс администратора, который я создал и переопределил метод get_form (например, я не хочу отображать фамилию, если у пользователя нет пользовательских прав):

class HumanAdmin(admin.ModelAdmin):
        fieldsets = (
                ('Fields 1', {'fields': ('id','name', 'surname'),}),
        )
        def get_form(self, request, obj=None, **kwargs):
            if request.user.has_perm('app_name.custom_permission'):
                self.fieldsets[0][1]["fields"] = ('id','name', 'surname')
                form = super(InventoryAdmin,self).get_form(request, obj, **kwargs)
            else:
                self.fieldsets[0][1]["fields"] = ('id','name') #I do not want to see if user does not have custom permission
                form = super(InventoryAdmin,self).get_form(request, obj, **kwargs)
            return form

Итак, когда я открываю форму изменения от пользователя, не имеющего пользовательских прав, и от пользователя, имеющего пользовательские права одновременно, я получаю ошибку

KeyError: "Key 'surname' not found in 'HumanForm'." 
in .../site-packages/django/forms/forms.py, line 155, in __getitem__

на экране пользователя, имеющего пользовательские права...

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