排序组件
排序组件快速使用
第一步:视图类需继承GenericAPIView或其子类
# 以图书类为例 class BookView(ViewSetMixin, ListAPIView): queryset = Book.objects.all() serializer_class = BookSerializer
第二步:导入排序类相关组件
# drf 内置了排序类 from rest_framework.filters import OrderingFilter
第三步:在类中配置和书写属性
# 只要继承GenericAPIView视图类,就可以通过配置类属性:filter_backends 来控制排序 filter_backends = [OrderingFilter] # 先按价格降序排,如果价格一样,再按ip升序排 ordering_fields = ['price', 'id']
整体代码如下:
class BookView(ViewSetMixin, ListAPIView): queryset = Book.objects.all() serializer_class = BookSerializer filter_backends = [OrderingFilter] ordering_fields = ['price', 'id']
第四步:前端访问
末尾书写 ?ordering=属性
http://127.0.0.1:8000/api/v1/books/?ordering=price 按price升序排 http://127.0.0.1:8000/api/v1/books/?ordering=-price 按price降序排 http://127.0.0.1:8000/api/v1/books/?ordering=-price,id