为什么django会为表单字段调用__init __()两次

时间:2012-06-05 13:28:22

标签: django django-forms

我正在尝试在表单中使用django-simple-autocomplete。但是,当我向simple_autocomplete.widgets添加调试打印时,我看到每个表单字段的小部件__init__()被调用两次,首先使用表单规范中提供的参数以及没有任何参数的第二时间,这显然会破坏所有与参数相关的内容。

我必须通过以下方式解决这个问题:

class MyForm(forms.Form):
    def __init__(self,*args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['foo'] = AutoCompleteWidget(url="/json_url")

    foo = forms.ModelChoiceField(
        widget=None,
        ....
        )

为什么这样呢?

编辑/澄清

  • 如果我具有上述解决方法,而只是在foo定义中使用widget = MyWidget(),则会发生这种情况。
  • 是两次调用小部件__init__()
  • @ zubair89 - 我确实有def __init__() - 这就是我实际发现它被调用两次的方式!

0 个答案:

没有答案