zoukankan      html  css  js  c++  java
  • DRF框架GenericAPIView之排序查询

    一、使用方法

    1.引入方式

    from rest_framework.filters import OrderingFilter

    2.添加引擎

    将OrderingFilter引擎添加到filter_backends列表中,也可以添加到全局

    filter_backends = [DjangoFilterBackend, OrderingFilter]

    3.指定排序字段

    使用ordering_fields指定需要排序的字段

    ordering_fields = ['id', 'name', 'leader', 'programmer', 'tester']

    二、完整代码展示

    from rest_framework.response import Response
    from rest_framework import status
    from rest_framework.generics import GenericAPIView
    from django_filters.rest_framework import DjangoFilterBackend
    from rest_framework.filters import OrderingFilter
    from .models import Projects
    from .serializers import ProjectsModelSerializer
    
    
    class ProjectsPage(GenericAPIView):
        '''
        类视图
        '''
        queryset = Projects.objects.all()
        serializer_class = ProjectsModelSerializer
    
        filter_backends = [OrderingFilter]
        ordering_fields = ['id', 'name', 'leader', 'programmer', 'tester']
    
        def get(self, request, pk=None):
            qs = self.get_queryset()
            qs = self.filter_queryset(qs)
            serializer_obj = self.get_serializer(instance=qs, many=True)
            return Response({'code': 0, 'res': "success", 'msg': serializer_obj.data}, status=status.HTTP_200_OK)

    三、结果验证

    如果是数字则默认为从小到大排序,字符串默认为以ASCII码从小到大排序,排序的查询字符串参数默认为ordering,如果要进行倒序排列,则在需要排序的字段前面指定一个减号(-)即可,如:ordering=-name

    1.顺序排序

    2.倒序排序

  • 相关阅读:
    maven 创建web项目出错
    poj1699--Best Sequence(dfs+剪枝)
    HDU-1042-N!(Java大法好 && HDU大数水题)
    “XXX.Index”不扩展类“System.Web.UI.Page”,因此此处不同意的问题
    scala模式匹配
    scala匿名函数
    scala特质
    group by的使用
    liux之我用过的zip解压命令
    liunx之zip格式的解压命令
  • 原文地址:https://www.cnblogs.com/xiaogongjin/p/13338019.html
Copyright © 2011-2022 走看看