208

我有这个字段:

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

4

2 回答 2

529

您可以通过执行以下操作获得一个空的查询集:

MyModel.objects.none()

虽然我不知道您将如何使用该表单,但您可以将其作为字段的查询集,以获得您需要的内容......

你可以在这里找到更多信息

于 2012-06-28T12:12:29.617 回答
3

@radtek 的评论应该是一个答案,因为它在类似情况下很有用,但方法与接受的答案不同。

如果您的查询集随着您视图中的 url 而变化。

我正在用我使用的示例扩展答案:

def my_view(request):
    ...
    form = YourForm(initial={'field1':value1, 'field2':value2})
    form.fields['field3'].queryset = YourModel.objects.filter('foo'=bar)
于 2018-03-12T06:53:35.617 回答