Ключ '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__
на экране пользователя, имеющего пользовательские права...