我目前无法覆盖__init__()
的{{1}}。
forms.Form
class ReportsMainForm(forms.Form):
---- #Some fields
def __init__(self, *args, **kwargs):
super(ReportsMainForm, self).__init__(*args, **kwargs)
问题在于,我的class Child(ReportsMainForm):
customer = forms.ModelChoiceField(
queryset=Customer.objects.none(), label="Customer", empty_label=None, required=False)
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super(Child, self).__init__(*args, **kwargs)
self.fields['customer'].queryset = Customer.objects.filter(user=self.request.user)
尚未更新。我错过了什么?
答案 0 :(得分:3)
尝试更改小部件的查询集(ehm ...选项):
self.fields['customer'].queryset = ...
self.fields['customer'].widget.choices = self.fields['customer'].choices
<强> WHY吗
检查代码(请参阅django.forms.model.ModelChoiceField),当在字段小部件上设置查询集时,也会更新(这很好):
但是选择会缓存在字段上,因此它们总是相同的......
我认为这是一个错误,因为有明确的选项&#34; cache_choices&#34;在字段init上,默认为False。
答案 1 :(得分:0)
此行错误
super(ProjectsBySalesman, self).__init__(*args, **kwargs)
应该是
super(Child, self).__init__(*args, **kwargs)