我希望避免在循环中使用queryset因为它经常访问数据库我必须列出
Degreyid: [1, 3, 2, 3]
companyid: [2, 2, 2, 1]
我希望结合使用筛选:-我希望对象的筛选器具有Degreyid:1和companyid:2,第二个测试应为Degreyid:3并companyid:2Degreyid:3和公司ID:1。
我不想使用这样的循环:
i=0
list=[]
while i < len(listilam):
ddegrycomp = DegreyCompany.objects.filter(withdegrey=Degreyid[i], company=companyid[i])
i+=1
有什么方法可以并行使用两个列表的过滤器??
注意:使用:.filter(withdegrey__in=Degreyid, company__in=companyid)
在这里对没有帮助
您可以使用检索元素
from django.db.models import Q
q_filter = Q(
*[Q(withdegrey=x, company=y)
for x, y in zip(Degreyid, companyid)],
_connector=Q.OR
)
items = DegreyCompany.objects.filter(q_filter)
这里我们构造了一个Q
对象。这是一个过滤器表达式,但我们使用循环执行而不是查询。然后,我们在一个单个查询中检索元素。