在django表单类中放入__init__方法的内容是什么?

时间:2013-08-09 13:16:20

标签: python django django-forms

什么时候通常使用django形式的__init__函数,因为我似乎不需要在表单内部有__init__函数。通常,我可以创建一个包含从forms继承的字段的表单,例如forms.charfield。那么,何时需要使用__init__函数。

1 个答案:

答案 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'])