Для Q object в Django, я хотел бы иметь возможность разобрать AND
, OR
запросов. Вот пример запроса, который будет обработан:python передать аргументы функции, разделенной символом
from django.db.models import Q
Poll.objects.filter(
Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6))
)
Этот запрос идентичен:
a = Q(pub_date=date(2005, 5, 2))
b = Q(pub_date=date(2005, 5, 6))
Poll.objects.filter(
a | b
)
Можно ли разобрать запрос, как показано ниже? Он, очевидно, потерпит неудачу, потому что join
возвращает строку, конкатенированную символом |
. Но это синтаксис Django ORM, и мы хотели бы динамически анализировать эти запросы без жесткого кодирования аргументов Q
.
a = Q(pub_date=date(2005, 5, 2))
b = Q(pub_date=date(2005, 5, 6))
Poll.objects.filter(
" | ".join([a,b])
)
Что вы пытаетесь сделать? Объединить объекты Q с '|' оператором? Или разобрать строку? – Mikel
@Mikel Я пытаюсь объединить объекты Q. –