Фильтрация набора запросов в зависимости от входящих параметров?Python

Программы на Python
Anonymous
Фильтрация набора запросов в зависимости от входящих параметров?

Сообщение Anonymous »

У меня есть параметры фильтра, которые я получаю через запрос GET. Эти параметры используются для фильтрации QuerySet:

Код: Выделить всё

class FilterData(TypedDict):
title: str
min_price: int
max_price: int
freeDelivery: bool
available: bool
tags: list[int | None]
Как видите, список тегов может быть пустым, и это поле не должно быть в фильтрующем запросе.
Итак, как лучше всего изменить мой фильтрующий запрос в зависимости от по входным параметрам? может помочь, но я не уверен, что это хорошее решение:

Код: Выделить всё

if not tags:
result = Product.objects.filter(
Q(
price__gte=filter_data["min_price"],
price__lte=filter_data["max_price"],
)
& Q(freeDelivery=filter_data["freeDelivery"])
& Q(available=filter_data["available"])
& Q(title__icontains=filter_data["title"]))
).order_by(order_field)
else:
result = Product.objects.filter(
Q(
price__gte=filter_data["min_price"],
price__lte=filter_data["max_price"],
)
& Q(freeDelivery=filter_data["freeDelivery"])
& Q(available=filter_data["available"])
& Q(title__icontains=filter_data["title"])
& Q(tags__contains=[1, 2, 3])
).order_by(order_field)
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/785 ... parameters

Вернуться в «Python»