如何在表单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类的正下方...行,但我希望这是动态的,这取决于传入的用户,所以不能这样做。
谢谢
发布于 2010-04-08 21:24:19
只需切换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
https://stackoverflow.com/questions/2599893
复制相似问题