Кто-нибудь знает, как условно установить наборы полей?

Я использую наборы полей в моей панели администратора для группировки / заголовка моих связанных полей. Это прекрасно работает в суперпользователе. Когда я вхожу в систему как персонал, за исключением некоторых полей, я получаю сообщение об ошибке.

Поймано KeyError во время рендеринга: ключ 'A' не найден в форме

В простом примере ниже, если я супер пользователь, все отлично работает. Если я вхожу в систему как штатный пользователь, таким образом, код исключает A fieldset, я получаю ошибку:

models.py:

Автомобили класса (модели. Модель):
A = models.CharField ('A',...)
B = модели....
C = модели...
D = модели...

admin.py:

Класс CarsAdmin (admin.ModelAdmin):
fieldsets = (_ ('первая группа'}, {'fields'sad (' A ',' B '), (' C ',' D '),)})
def get_form (self, request,obj= None, **kwargs):
self.exclude = []
если нет request.user.is_superuser:
self.exclude.append ('А')
return super (CarAdmin, self).get_form (запрос,obj= Нет, **kwargs)

В итоге я хочу сохранить группировку, предлагаемую fieldsets.

Кто-нибудь знает, как условно установить fieldsets??

1 ответ

Вы должны удалить A поле из self.fieldsets а также при добавлении его в self.exclude,

Другие вопросы по тегам