我目前有一个包含多个对象的数组。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>]>
我想将它们全部存储/合并到一个变量中 - 防止丢失所有结果(我猜现在只保留最后一个结果,因为变量被覆盖了)
我怎样才能实现?
您需要构建查询,然后对其进行过滤,以便查询集不会在每次迭代时发生更改。
Q
这将为每个字段添加一个带有 OR 的对象,以及每个 search_post 项目。有更简洁的方法,但最好不要过早地将事情复杂化。我们可以通过构造单个
Q
对象来简化这一点: