Как можно опустить пустые параметры django-фильтра в url?

Я использую django-filters для фильтрации моего набора запросов, мне интересно, возможно ли, чтобы библиотека опускала пустые поля при генерации отфильтрованного URl. Мой URl будет выглядеть следующим образом:

/?price=&producer=&price__gte=4&price__lte=&producer__name=&category__name=&o=-price

И я хочу добиться более чистого варианта, используя только непустые фильтры:

/?price__gte=4&o=-price

filters.py

class ProductFilter(django_filters.FilterSet):
    # price = django_filters.NumberFilter()
    price__gte = django_filters.NumberFilter(field_name="price", lookup_expr="gte")
    price__lte = django_filters.NumberFilter(field_name="price", lookup_expr="lte")

    vendor__name = django_filters.CharFilter(lookup_expr="icontains")
    category__name = django_filters.CharFilter(lookup_expr="icontains")

    o = django_filters.OrderingFilter(
        # tuple-mapping retains order
        fields=(("price", "price"),),
        # labels do not need to retain order
    )

    class Meta:
        model = Product
        fields = ["price", "category", "vendor"]

views.py

class ProductListView(LoginRequiredMixin, ListView):
    model = Product

    ordering = ["-created_at"]

    def get_ordering(self):
        ordering = self.request.GET.get("ordering", "-created_at")
        return ordering

    def get_queryset(self, **kwargs):
        qs = Product.objects.exclude(status="HID").all()
        return qs

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        f = ProductFilter(self.request.GET, queryset=self.get_queryset())
        context["filter"] = f
        return context
Вернуться на верх