DjangoRest框架:同时使用OrderingFilter和djangofilter时出现问题
def list(self, request):
assets = self.filter_queryset(self.get_queryset())
原来这是一个非常简单的修复;您必须将DjangoFilterBackend和{}都显式地包含为filter_backends,尽管在设置中全局指定了DjangoFilterBackend。在
工作代码如下:
class AssetViewSet(viewsets.GenericViewSet, AssetPaginationMixin,):
queryset = Asset.objects.all()
pagination_class = AssetPagination
serializer_class = serializers.AssetSerializer
filter_backends = (DjangoFilterBackend, OrderingFilter,)
ordering_fields = ('id', 'session_id')
filter_class = AssetFilterSet
def list(self, request):
assets = self.filter_queryset(self.get_queryset())
serializer = self.get_serializer(assets, many=True)
return Response(serializer.data)
我的印象是在SETTINGS中指定DjangoFilterBackend意味着默认情况下会包含它,而添加一个filter_backends过滤器将添加到它,而不是替换它。活到老学到老!在