排序组件

发布时间 2023-12-28 15:29:16作者: wellplayed

排序组件快速使用

第一步:视图类需继承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