Django表单字段查询集优化

时间:2016-04-19 16:21:32

标签: python django forms

我在Django app上有这样的表格:

class CustomForm(forms.Form):
    field1 = forms.ModelChoiceField(queryset=ModelA.objects.filter(type=A))
    field2 = forms.ModelChoiceField(queryset=ModelA.objects.filter(type=B))

调试工具栏告诉我 ModelA 上有两个重复的查询,但过滤条件不同。这是一个错误吗?另外,我想知道是否有办法优化这种情况并只进行一次查询

谢谢!

1 个答案:

答案 0 :(得分:0)

ModelA.objects.filter(type=A)ModelA.objects.filter(type=B)是两个独立的查询集,因此需要两个查询。

理论上,你可以做到

ModelA.objects.filter(type__in=[A, B])

哪个对象可以type=Atype=B。然后,您可以在Python中过滤列表。但是,这不一定会更好。您将无法再使用ModelChoiceField,因此您的代码会更复杂。