Есть ли способ взять список выражений запроса django (например, Q(first_name="Jordan")
, где Q
- django.db.models.Q
) и побитовые ИЛИ их вместе?
Другими словами, у меня есть что-то вродеэто:
search_string = "various search terms"
И я хочу сделать это:
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)
, где search_params
сейчас эквивалентно Q(description__icontains="various") | Q(description__icontains="search" | Q(description__icontains="terms"
Я знаю, что это было бы возможнос такой функцией:
def something_magical(lst):
result = lst[0]
for l in lst[1:]
result |= l
return result
Поэтому мне интересно, встроена ли эта функциональность в Python (и я предполагаю, что она более оптимизирована, чем моя функция здесь).
ХотяЯ заинтересован в этом для этого приложения, я просто интересуюсь им теоретически.