Как я могу добавить поле в форме 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.... строка, но я хочу, чтобы это было динамично в зависимости от того, в чем передается пользователь, так не может сделать этого этот путь.
Спасибо
Просто нужно переключить функцию 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