Search code examples
djangodjango-filterdjango-filters

Ordering Filter using 2 ordering values(django_filters)


Hello every one is there a way to use OrderingFilter like in django order_by with 2 ordering values queryset.ordery_by('value1', value_2')

I have tried

order_by = django_filters.OrderingFilter(
        fields=(
            ('item_name', 'Items),
            ('time_from', 'Time'),
            (('value1', 'value2'), 'Value'),
        )
    )

But received expected string or bytes-like object


Solution

  • OrderingFilter supports multiple ordering params if you're willing to include them in the request: my_view?order_by=value1,value2.

    If you want the same result with a request that looks like my_view?order_by=values, a way I can think of to achieve that is to override OrderingFilter:

    class CustomOrderingFilter(OrderingFilter):
        def filter(self, qs, value):
            if any(v == 'values' for v in value):
                qs.order_by('value1', 'value2')
            return super(CustomOrderingFilter, self).filter(qs, value)