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


浙公网安备 33010602011771号