2

我正在尝试在表单中使用django-simple-autocomplete。但是,当我向 中添加调试打印时simple_autocomplete.widgets,我看到每个表单字段的widget__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__()- 这就是我实际上发现它被调用两次的方式!
4

0 回答 0