我有以下形式的字段:
city = forms.ModelChoiceField(label="city", queryset=MyCity.objects.all())
district = forms.ModelChoiceField(label="district", queryset=MyDistrict.objects.all())
area = forms.ModelChoiceField(label="area", queryset=MyArea.objects.all())
地区来自点击城市,地区来自点击区域。使用queryset=MyDistrict.objects.all()
和queryset=MyArea.objects.all()
形式会很重。如何在默认情况下将查询集设为空?
答案 0 :(得分:335)
您可以通过执行以下操作获得空的查询集:
MyModel.objects.none()
虽然我不知道您将如何使用该表单,但您可以将其作为字段的查询集,以便获得所需的内容...
您可以找到更多信息here
答案 1 :(得分:1)
@ radtek' s comment应该是一个答案,因为它在类似的场景中很有用,但方法与接受的答案不同。
如果您的查询集随视图中的网址而变化。
我正在使用示例扩展答案:
def my_view(request):
...
form = YourForm(initial={'field1':value1, 'field2':value2})
form.fields['field3'].queryset = YourModel.objects.filter('foo'=bar)