默认情况下,在django表单字段中创建空查询集

时间:2012-06-28 11:25:03

标签: django django-forms

我有以下形式的字段:

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()形式会很重。如何在默认情况下将查询集设为空?

2 个答案:

答案 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)