您只是在构建与实际
Q()查询对象没有任何关系的字符串。从第一个
Q()实例开始并添加更多:
query = Q(type__type=types[0])for t in types[1:]: query |= Q(type__type=t)projects.filter(query)
您也可以使用该
functools.reduce()函数执行此操作:
from functools import reducefrom operator import or_query = reduce(or_, (Q(type__type=t) for t in types))projects.filter(query)
该
reduce()调用与上述
for循环完全相同。采取一系列
Q(..)对象并将它们组合成一个更大的查询,其中所有部分都与
|或操作结合在一起。



