我现在有一个数组有多个对象。for循环使用模型的for循环基于数组对象执行查询集。
search_post = ["1990", "2023"]
for query in search_post:
vehicle_result = Vehicle.objects.filter(
Q(title__icontains=query) |
Q(details__icontains=query) |
Q(year__icontains=query) |
Q(notes__icontains=query)
)
print('vehicle_result: %s' % vehicle_result)
我遇到的问题是,当数组有多个元素时,它会为每个对象执行for循环,并输出每个对象的结果。如果我在代码中的其他地方调用这个变量,只保留最后一个对象的结果。
输出示例:
vehicle_result: <QuerySet [<Vehicle: BMW>]>
vehicle_result: <QuerySet [<Vehicle: Toyota>, <Vehicle: Mercedes>, <Vehicle: Honda>]>
我想存储/合并他们都到一个变量-防止丢失所有的结果(现在只有最后一个被保留,我猜,因为变量被覆盖)
我怎么能做到呢?
2条答案
按热度按时间hujrc8aj1#
您需要构建查询,然后对其进行过滤,以便查询集在每次迭代中都不会更改。
这将添加一个
Q
对象,每个字段都有一个OR,每个search_post项都有。有更简洁的方法,但最好不要过早地把事情复杂化。4xy9mtcn2#
我们可以通过构造一个
Q
对象来简化它: