我想避免在循环内使用查询集
因为对数据库的影响很大
我必须列出
Degreyid: [1, 3, 2, 3]
companyid: [2, 2, 2, 1]
我想结合使用过滤:
-我想要过滤对象有度数:1 and 公司编号:2和第二次测试应该是度数:3 and 公司编号:2…………度数:3 and 公司编号:1 .
我不想像这样使用循环:
i=0
list=[]
while i < len(listilam):
ddegrycomp = DegreyCompany.objects.filter(withdegrey=Degreyid[i], company=companyid[i])
i+=1
有什么方法可以并行使用两个列表的过滤器?
note:使用 :.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
目的。这是一个过滤器表达,但我们确实not用循环查询。然后我们就可以检索其中的元素single query.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)