Django表单域查询集优化

2024-03-28 22:52:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django应用程序上有这样一个表单:

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

调试工具栏告诉我在ModelA上有两个重复的查询,但是过滤条件不同。这是虫子吗?。另外,我想知道是否有一种方法可以优化这个案例,只做一个查询

谢谢!你知道吗


Tags: djangoform应用程序表单objectstypeformsfilter
1条回答
网友
1楼 · 发布于 2024-03-28 22:52:18

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

理论上,你可以

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

它将获取所有对象,其中type=Atype=B。然后可以用Python过滤列表。然而,这并不一定会有更好的表现。您将无法再使用ModelChoiceField,因此您的代码将更加复杂。你知道吗

相关问题 更多 >