什么时候通常使用django形式的__init__
函数,因为我似乎不需要在表单内部有__init__
函数。通常,我可以创建一个包含从forms
继承的字段的表单,例如forms.charfield
。那么,何时需要使用__init__
函数。
答案 0 :(得分:2)
大多数情况下,覆盖 __init__
函数没有必要 - 请注意它已经在基本表单类中定义。
如果你需要覆盖它,请确保你调用超级对象的__init__
函数,否则你会破坏大量的东西。
我发现覆盖__init__
方法的最常见用例是根据某些条件动态定义或排除字段。这看起来像这样:
def __init__(self, *args, **kwargs):
super(FormClass, self).__init__(*args, **kwargs)
if self.object: # in case of ModelForm
self.fields['extra_field'] = forms.CharField(required=False)
self.fields['other_field'].required = True
del(self.fields['non_editable_field'])