排序
# 排序的定义和实现
# 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 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
编辑 (opens new window)
← 搜索 flask基础(1)→