Esiste un modo per ottenere un elenco di query django espresso (ad esempio Q(first_name="Jordan")
, dove Q
è django.db.models.Q
) e OR bit a bit insieme?Elenco Python per operazioni bit a bit
In altre parole, ho qualcosa di simile:
search_string = "various search terms"
E io voglio fare questo:
search_params = [Q(description__icontains=term) for term in re.split(r'\W', search_string)]
search_params = something_magical(search_params)
results = Record.objects.filter(search_params)
dove search_params
ora è equivalente a Q(description__icontains="various") | Q(description__icontains="search" | Q(description__icontains="terms"
so che sarebbe essere possibile con una funzione come questa:
def something_magical(lst):
result = lst[0]
for l in lst[1:]
result |= l
return result
Quindi mi chiedo se questa funzionalità è già integrata in Python (e presumo che sia più ottimizzata della mia funzione qui).
Anche se sono interessato a questa applicazione, anche a me interessa solo teoricamente.
Non penso che ci sia un tale operatore di Django ... Ma potresti semplicemente fare tutte le "o" query e poi usare gli operatori di python set per combinare i risultati? (http://docs.python.org/library/sets.html#set-objects) –
@RichardGreen che può creare query abbastanza brutte –