我正在尝试在表单中使用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__()
- 这就是我实际上发现它被调用两次的方式!