Как указал Юджи Томита, вы не можете использовать get_fieldsets () без переопределения формы с помощью get_form ():
class MyModelAdmin(admin.ModelAdmin):
def get_fieldsets(self, request, obj=None):
if obj:
return [(None, {'fields': ('field_c', 'field_b')})]
return [(None, {'fields': ('field_a', 'field_b', 'field_c')})]
def get_form(self, request, obj=None, **kwargs):
if obj:
defaults = {'exclude': ('field_a',)}
else:
defaults = {}
defaults.update(kwargs)
return super(MyModelAdmin, self).get_form(request, obj, **defaults)
Поскольку я просто разбивал форму на наборы полей и показывал их в соответствии с пользователямиЯ думаю, что в этом случае Django все еще думает, что ему нужно проверить поля, которые на самом деле не в форме из-за get_fieldsets ().Как только эти поля исключены в get_forms (), все начинает работать.
Большое спасибо, Юджи Томита.