@Aidar567

Фильтрация модели по ограниченному, но динамичному количеству параметров в гет запросе?

Подскажите логику Django view для фильтрации модели по нескольким возможным параметрам из гет запроса. Типа клиент может фильтровать только по одному полю, а может по всем. Может по периоду даты и при этом выбрать только начало/с и не выбирать по, с ценой то же самое. Не могу придумать как отслеживать все это.
  • Вопрос задан
  • 32 просмотра
Пригласить эксперта
Ответы на вопрос 1
@gimntut
Если очень грубо, то как-то так:
# ... Где-то здесь определяем quryset как нефильтрованный набор
title = request.GET.get('title')
price_min = request.GET.get('price_min')
price_max = request.GET.get('price_max')
if title:
  quryset = quryset.filter(title=title)
if price_min and price_max:
  quryset = quryset.filter(price__range=(price_min, price_max))
elif price_min:
  quryset = quryset.filter(price__gte=price_min)
elif price_max:
  quryset = quryset.filter(price__lt=price_max)

Главное не забывать
quryset =
и не писать if вместо elif для парных параметров, таких как price_min, price_max, и тогда всё заработает.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы