【发布时间】:2014-01-02 09:55:27
【问题描述】:
我不知道如何动态更新 AutoModelSelect2Field 的查询集。我得到了非常奇怪的结果。例如,有时 select2 框会返回正确的过滤结果,有时当我输入相同的字符时它会返回 NO 结果。
我的代码:
#views.py
form = MyForm()
#forms.py
class MyField(AutoModelSelect2Field):
search_fields = ['name__icontains']
max_results = 10
class MyForm(forms.Form):
my_field = MyField(
queryset=project.objects.none(),
required=True,
widget=AutoHeavySelect2Widget(
select2_options={
'width': '100%',
}
)
)
def __init__(self, *args, **kwargs):
qs = kwargs.pop('queryset')
self.base_fields['my_field'].queryset = qs
super(MyForm, self).__init__(*args, **kwargs)
#self.fields['my_field'].queryset = qs
#self.base_fields['my_field'].queryset = qs
我尝试过的一些事情 -
从视图更新:
#views.py
form = MyForm()
form.base_fields['my_field'].queryset = new_qs
和:
form = MyForm()
form.fields['my_field'].queryset = new_qs
将 qs 传递给表单:
#views.py
form = MyForm(queryset=Project.objects.filter(project_type=pt))
# see above code for forms.py
我也尝试将初始 qs 设置为所有对象:
class MyForm(forms.Form):
my_field = MyField(
queryset=project.objects,
...
但我遇到了同样的问题,90% 的时间我得到的是初始查询集的结果,而不是基于新 qs 的过滤对象。
【问题讨论】:
标签: python django jquery-select2