DRF框架GenericAPIView之排序查询

Posted 小公瑾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.倒序排序

以上是关于DRF框架GenericAPIView之排序查询的主要内容,如果未能解决你的问题,请参考以下文章

DRF框架之视图基类APIView和GenericAPIView简介

DRF框架之视图的扩展类简介

drf过滤和排序及异常处理的包装

django drf GenericAPIView和ListAPIView

#私藏项目实操分享#愚公系列2022年05月 Python教学课程 75-DRF框架之排序

drf视图家族