У меня есть 2 таблицы Product и Price. У товара может быть несколько цен. Это для запоминания старых цен на продукт.
В моем представлении продукта у меня есть следующий код:
products = ProductFilter(filters, queryset=products.all())
ProductFilter
- это настраиваемый класс фильтра. Переменная фильтра такая же, как request.GET
.
Вот как выглядит фильтр:
class ProductFilter(django_filters.FilterSet):
...
price__final_price__gte = django_filters.NumberFilter(
field_name="price__final_price", lookup_expr="gte"
)
price__final_price__lte = django_filters.NumberFilter(
field_name="price__final_price", lookup_expr="lte"
)
price__currency = django_filters.CharFilter()
class Meta:
model = Product
fields = ["name", "external_id"]
Это проблема. Если для продукта A, например, 3 цены.
Продукт A:
1. 50 $ - 2020 / март
2. 20 $ - 2019 / de c
3. 60 $ - 2019 / jan
Когда я фильтрую, я хочу фильтровать только самую последнюю цену. Поэтому, если бы в моем filter
было price__final_price__lte: 30
, я бы не хотел, чтобы этот продукт был выбран, потому что цена на 2019 / de c действительно была ниже 30, а самая текущая цена - нет. Каким образом мне нужно изменить мой класс ProductFilter
, чтобы это стало возможным?
(Некоторые идеи, которые у меня были, где искать ближайшую дату с учетом текущей даты, но я не мог заставить это работать.) Любая помощь будет принята с благодарностью.