Are there ability to Ordering result with djangorestframework-filters ComplexFilterBackend from URL?
DRF OrderingFilter is not worked with standart examples for djangorestframework-filters v.1.0.0.dev2.
My code with default order_by in query_set:
- Filter class:
from models import Template
class TemplateFilter(filters.FilterSet):
class Meta:
model = Template
fields = {
'id': '__all__',
'status': '__all__',
'name' : '__all__',
'parent_id' : '__all__',
}
- View:
from serializers import TemplateListSerializer
from models import Template
from filters import TemplateFilter
class TemplateListView(ListCreateAPIView):
filter_class = TemplateFilter
def get(self, request, *args, **kwargs):
self.queryset = Template.objects.all().order_by('-created')
self.serializer_class = TemplateListSerializer
return self.list(request, *args, **kwargs)
How I can to change this code for ordering (sort) response from URL Request? I want to see record with parent_id=guid first.
My input url for Django:
GET /api/templates/?filters=(parent_id__isnull%3DTrue)%7C(parent_id%3Dguid)%26(ordering%3Dparent_id)&page=1
Decoded:
/api/templates/?filters=(parent_id__isnull=True)|(parent_id=guid)&(ordering=parent_id)&page=1
Answer - mandatory set two backend filters:
First - for search, ComplexFilterBackend
Second - for ordering, OrderingFilter