OrderingFilter не имеет атрибута 'filter_queryset'

Я пытаюсь заставить OrderingFilter работать. Из примера на странице django-rest-framework, похоже, должно быть достаточно просто:

class UserListView(generics.ListAPIView): queryset = User.objects.all() serializer_class = UserSerializer filter_backends = (filters.OrderingFilter,) ordering_fields = ('username', 'email') 

Однако, когда я пытаюсь это сделать:

 from django_filters.rest_framework import DjangoFilterBackend, FilterSet, OrderingFilter ... class ListingViewSet(viewsets.ModelViewSet): queryset = Listing.objects.all() serializer_class = ListingSerializer filter_backends = (DjangoFilterBackend, OrderingFilter,) filter_class = ListFilter ordering_fields = ('price', 'views') ordering = ('price',) 

Я получаю сообщение об ошибке, когда OrderingFilter не имеет атрибута filter_queryset :

 ERROR 2016-11-13 03:14:57,304 log 25913 123145338523648 (<class 'AttributeError'>, AttributeError("'OrderingFilter' object has no attribute 'filter_queryset'",), <traceback object at 0x106ef48c8>) Traceback (most recent call last): File "/.../lib/python3.5/site-packages/rest_framework/views.py", line 474, in dispatch response = handler(request, *args, **kwargs) File "/.../lib/python3.5/site-packages/rest_framework/mixins.py", line 40, in list queryset = self.filter_queryset(self.get_queryset()) File "/.../lib/python3.5/site-packages/rest_framework/generics.py", line 151, in filter_queryset queryset = backend().filter_queryset(self.request, queryset, self) AttributeError: 'OrderingFilter' object has no attribute 'filter_queryset' 

Переходя в OrderingFilter , он действительно не имеет метода filter_queryset , но представление ожидает его:

 # in GenericAPIView(views.APIView) def filter_queryset(self, queryset): """ Given a queryset, filter it with whichever filter backend is in use. You are unlikely to want to override this method, although you may need to call it either from a list view, or from a custom `get_object` method if you want to apply the configured filtering backend to the default queryset. """ for backend in list(self.filter_backends): queryset = backend().filter_queryset(self.request, queryset, self) return queryset 

Я пробовал различные решения в django rest framework queryset не упорядочивает , но, похоже, они тоже не работают. Я попробовал обновить наиболее перспективный ответ:

 class YOUR_VIEW_SET(viewsets.ModelViewSet): #your code here ordering_filter = OrderingFilter() def filter_queryset(self, queryset): queryset = super(YOUR_VIEW_SET, self).filter_queryset(queryset) return self.ordering_filter.filter_queryset(self.request, queryset, self) 

Так как OrderingFilter не имеет метода filter_queryset , я изменил filter_queryset на filter (который у него есть), но этот вызов, похоже, сталкивается с сигнатурой filter в OrderingFilter :

 # In OrderingFilter(BaseCSVFilter, ChoiceFilter) def filter(self, qs, value): if value in EMPTY_VALUES: return qs ordering = [self.get_ordering_value(param) for param in value] return qs.order_by(*ordering) 

Я не знаю, какое value в объявлении функции должно быть таким, чтобы я мог попытаться передать его функции, но, похоже, qs ссылается на набор запросов, поэтому я предполагаю, что это должен быть первый аргумент вместо второго, но снова , Я не совсем уверен, какая value будет; он не кажется запросом, потому что он не является итерируемым.

Я был бы признателен за любые указатели или идеи или обходные пути, и я прошу прощения, если я пропустил что-то очевидное; Я не очень хорошо знаком с Django.

Python - лучший язык программирования в мире.