14-2 过滤搜索排序-DRF排序

目录:

  • 排序的定义和实现

 一、排序的定义和实现

1.1、排序定义

  我们每次在排序的服务的时候,都是以 http://127.0.0.1:8000/api/game.json?ordering=-id ,而且排序的字段都是我们自己定义好的,后面的排序字段必须以 ordering定义,不能是其他字段,那这个我们如何在DRF中去实现呐。OrderingFilter类支持简单的查询参数控制结果排序

1.2、排序的实现

from .custom_model_view_set import CustomModelViewSet
from django_filters.rest_framework import DjangoFilterBackend
from .custom_filter import GameFilter
from rest_framework import filters

class GameView(CustomModelViewSet):
    queryset = Game.objects.all()
    serializer_class = GameSerializer

    
    filter_backends = (DjangoFilterBackend, filters.SearchFilter,filters.OrderingFilter) #加入排序的过滤器

    # 过滤
    # filter_fields = ('name', 'status')
    filterset_class = GameFilter

    # 搜索
    search_fields = ("name", "status")
    
    #排序 
    #注意 filter_backends多了一个filters.OrderingFilter
    ordering_fields = ['status', "id", "name"] #根据定义的排序字段取排序

1.3、postman测试结果

降序:http://127.0.0.1:8000/api/game/?ordering=-id,会根据id降序。

 

name降序: http://127.0.0.1:8000/api/game/?ordering=-name

posted @ 2020-05-09 17:17  帅丶高高  阅读(389)  评论(0)    收藏  举报