排序
对于列表数据,REST framework提供了OrderingFilter过滤器来帮助我们快速指明数据按照指定字段进行排序。
使用方法:
在类视图中设置filter_backends, 使用 rest_framework.filters.OrderingFilter 过滤器,REST framework会在请求的查询字符串参数中检查是否包含了ordering参数,如果包含了ordering参数,则按照ordering参数指明的排序字段对数据集进行排序。
前端可以传递的ordering参数的可选字段值需要在ordering_fields中指明。
INSTALLED_APPS = [
...
'django_filters' # 需要注册应用
]
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': (
'rest_framework.filters.OrderingFilter'
)
}
示例:
class BookListView(ListAPIView):
queryset = BookInfo.objects.all()
serializer_class = BookInfoSerializer
filter_backends = [OrderingFilter]
ordering_fields = ('id', 'bread', 'bpub_date')
# 用户排序
class UserModelView(ModelViewSet):
queryset = User.objects.all()
serializer_class = UserModelSer
# filter_backends = (DjangoFilterBackend,)
ordering_fields = ('age', 'hight')