@9550668

Не работает filter по QS. В чем причина?

Всем доброго времени суток.

Есть 2 варианта кода, 1 работает, а второй нет. Как-то неправильно передается параметр поиска, заложенный в переменную. Можете подсказать, как исправить?
Работает:
qs = qs.filter(Q(type=2) | Q(type=1))
Не работает:
query = "Q(type=2) | Q(type=1)"
qs = qs.filter(query)

Выдает ошибку:
ValueError: too many values to unpack (expected 2)

Заранее спасибо.
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
from functools import reduce
from operator import or_

from django.db.models import Q

values = (Q(type=int(j)) for j in (i.strip() for i in (query_type or '').split(',')) if j.isdigit())
query = reduce(or_, values, Q())

qs = qs.filter(query)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы