Atualmente tenho um array com vários objetos. O loop for faz um conjunto de consultas baseado nos objetos da matriz usando um loop for de um modelo.
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)
O problema que estou tendo é que quando o array tem vários itens, ele passa pelo loop for para cada objeto e gera o resultado de cada objeto. Somente o último resultado do objeto será retido se eu chamar essa variável em outro lugar do código.
Exemplo de saída:
vehicle_result: <QuerySet [<Vehicle: BMW>]>
vehicle_result: <QuerySet [<Vehicle: Toyota>, <Vehicle: Mercedes>, <Vehicle: Honda>]>
Quero armazenar/combinar todos eles em uma variável - evitar a perda de todos os resultados (no momento, apenas o último é retido, acho que porque a variável foi substituída)
Como posso conseguir?
Você precisa criar sua consulta e filtrá-la para que o conjunto de consultas não mude a cada iteração.
Isso adicionará um
Q
objeto com um OR para cada campo, com cada item search_post. Existem maneiras mais simples, mas é melhor não complicar as coisas logo no início.Podemos simplificar isso construindo um único
Q
objeto com: