Django Admin - Инлайн форма отсутствует после перекрывая get_form

Обновить

December 2018

Просмотры

1.2k раз

1

Мне нужно, чтобы скрыть некоторые поля из формы на Django администратора, если вошедший пользователь не является суперпользователем. Это то, что я придумал:

    def get_form(self, request, obj=None, **kwargs):
        form = super(RestauranteAdmin, self).get_form(request, obj, **kwargs)
        if not request.user.is_superuser:
            form.base_fields.pop('approved')
            form.base_fields.pop('day_of_the_week')
            form.base_fields.pop('photo')
        form.label_suffix = ''
        return form

Это действительно скрыть необходимые поля, но по какой-то причине, администратор также прекращает оказание своих Внутристрочные, если пользователь не является суперпользователем. Насколько я могу видеть, этот метод не должен иметь ничего общего с инлайнов. Я что-то пропустил?

Спасибо,

1 ответы

4

Just exclude it before calling the parent method

Hope it helps

def get_form(self, request, obj=None, **kwargs):
    if not request.user.is_superuser:              
       self.exclude = []
    else:    
       self.exclude = ['approved','day_of_the_week','photo']

    return super(RestauranteAdmin, self).get_form(request, obj, **kwargs)