django формируют создание на init

Как я могу добавить поле в форме init функция? например, в коде ниже я хочу добавить поле профиля.

class StaffForm(forms.ModelForm):
    def __init__(self, user, *args, **kwargs):
        if user.pk == 1:
            self.fields['profile'] = forms.CharField(max_length=200)

        super(StaffForm, self).__init__(*args, **kwargs)

    class Meta:
        model = Staff

Я знаю, что могу добавить его чуть ниже класса StaffForm.... строка, но я хочу, чтобы это было динамично в зависимости от того, в чем передается пользователь, так не может сделать этого этот путь.

Спасибо

21
задан John 8 April 2010 в 12:47
поделиться

1 ответ

Просто нужно переключить функцию init так, чтобы super вызывался перед добавлением дополнительных полей.

class StaffForm(forms.ModelForm):
    def __init__(self, user, *args, **kwargs):
        super(StaffForm, self).__init__(*args, **kwargs)

        if user.pk == 1:
            self.fields['profile'] = forms.CharField(max_length=200)
            self.fields['profile'].initial = 'whatever you want'
    class Meta:
        model = Staff
37
ответ дан 29 November 2019 в 20:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: