DRF的过滤与排序
过滤
对于列表数据可能需要根据字段进行过滤,我们可以通过添加 django-filter 扩展来增强支持。
pip install django-filter
在配置文件中增加过滤后端的设置:
INSTALLED_APPS = [
...
'django_filters', # 需要注册应用,
]
全局配置
在settings文件中配置:
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',) # 全局配置,对全部视图的查询多条接口都有过滤功能,但是视图里要指定字段
}
视图中指定要过滤的字段:
class EmployeeViewSet(ModelViewSet):
queryset = Employee.objects.all()
serializer_class = EmployeeSerializer
# 指定可以根据哪些字段进行列表数据的过滤
filter_fields = ('gender', 'department')
针对某个视图进行过滤(比较常用)
class EmployeeViewSet(ModelViewSet):
queryset = Employee.objects.all()
serializer_class = EmployeeSerializer # 指定过滤器
filter_backends = [DjangoFilterBackend]
# 指定可以根据哪些字段进行列表数据的过滤
filterset_fields = ('gender', 'department')
使用
访问127.0.0.1/employees?gender=1时可以过滤出性别字段是1的数据。
===================================================================================================================================
排序
对于列表数据,REST framework 提供了 OrderingFilter 过滤器 来实现按指定字段进行排序的功能
使用方法:
- 在类视图中设置
filter_backends,使用rest_framework.filters.OrderingFilter(自带的模块,导包时注意)过滤器:REST framework会在请求的查询字符串参数中检查是否包含了ordering参数,如果包含,则按照ordering参数指定的字段对数据集进行排序。- 在类视图中指定
ordering_fields属性,表示前端请求列表数据时,可以通过哪些字段进行排序
设置示例:
class EmployeeViewSet(ModelViewSet):
queryset = Employee.objects.all()
serializer_class = EmployeeSerializer
# 新增排序的过滤器
filter_backends = [..., OrderingFilter]
# 指定可以根据哪此字段进行排序
ordering_fields = ('age', 'salary')
使用示例:
访问127.0.0.1/employees/?ordering=age(年龄升序)
访问127.0.0.1/employees/?ordering=-age(年龄降序)
访问127.0.0.1/employees/?ordering=age,-salary(先安装年龄升序来排,如果年龄一样,按工资升序来排)
DRF的过滤与排序的更多相关文章
- Django(67)drf搜索过滤和排序过滤
前言 当我们需要对后台的数据进行过滤的时候,drf有两种,搜索过滤和排序过滤. 搜索过滤:比如我们想返回sex=1的,那么我们就可以从所有数据中进行筛选 排序过滤:比如我们想对价格进行升序排列,就可以 ...
- DRF:过滤&搜索&排序功能
过滤功能利用的是第三方包 django_filters,搜索和排序利用的是 Django DRF 提供的 filters 示例代码如下: from rest_framework import filt ...
- drf_jwt手动签发与校验-drf小组件:过滤-筛选-排序-分页
签发token 源码的入口:完成token签发的view类里面封装的方法. 源码中在请求token的时候只有post请求方法,主要分析一下源码中的post方法的实现. settings源码: 总结: ...
- drf过滤和排序及异常处理的包装
过滤和排序(4星) 查询所有才需要过滤(根据过滤条件),排序(按某个规律排序) 使用前提: 必须继承的顶层类是GenericAPIView 内置过滤类 内置过滤类使用,在视图类中配置,是模糊查询 使用 ...
- drf--搜索、过滤、排序组件
目录 drf--搜索.过滤.排序组件 过滤 DjangoFilterBackend 自定义过滤器django-filter模块 自定义过滤类 搜索SearchFilter 排序OrderingFilt ...
- ModelViewSet里的过滤、排序、分页、序列化设置
1.DRF初始化 1.认证 2.权限 3.限流 4.序列化 5.分页 6.版本 7.过滤 8.排序 1.1安装DjangoRestFramework pip install djangoresfra ...
- django-rest-framework 基础四 过滤、排序、分页、异常处理
django-rest-framework 基础四 过滤.排序.分页.异常处理 目录 django-rest-framework 基础四 过滤.排序.分页.异常处理 1. 过滤 1.1 内置过滤类 1 ...
- 在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView
背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5中创建GridView>中,我们学习了如何在 ASP.NET MVC 中实现 GridView,类似于 ASP.NET web ...
- 《Entity Framework 6 Recipes》中文翻译系列 (27) ------ 第五章 加载实体和导航属性之关联实体过滤、排序、执行聚合操作
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-9 关联实体过滤和排序 问题 你有一实体的实例,你想加载应用了过滤和排序的相关 ...
随机推荐
- Java生成C#可用Model包
项目需要提供接口给.NET团队使用,为方便大伙,特地写一个从Java接口生成C#可用Model包的工具Class 主Class是一个Controller,可以随时进行生成 package com.fa ...
- Flask 学习笔记(二):RESTful API
概括 URL:需要操作的对象,也就是资源 HTTP method:我要对该对象做什么(POST 增.DELETE 删.GET 查.PUT 和 PATCH 改) HTTP status code:操作的 ...
- 软件工程项目组Z.XML会议记录 2013/09/14
软件工程项目组Z.XML会议记录 [例会时间]2013年9月14日星期六21:00-22:30 [例会形式]小组讨论 [例会地点]新主楼A1025 [例会主持]李孟 [会议记录]李孟 会议整体流程 一 ...
- python进制转换(二进制、十进制和十六进制)及注意事项
使用内置函数实现进制转换实现比较简单,主要用到以下函数: bin().oct().int().hex() 下面分别详解一下各个函数的使用(附实例) 第一部分:其他进制转十进制 1.二进制转十进制 使用 ...
- PAT java大数 A+B和C
题目描述: 给定区间[-, ]内的3个整数A.B和C,请判断A+B是否大于C. 输入格式: 输入第1行给出正整数T(<=),是测试用例的个数.随后给出T组测试用例,每组占一行,顺序给出A.B和C ...
- 利用vue-cli搭建项目后的目录结构
npm install -g vue-cli vue init webpack my-project(项目名称) 后的目录结构: -----build webpack配置相关 --- ...
- 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有 多少总跳法?
首先我们考虑最简单的情况:如果只有1 级台阶,那显然只有一种跳法,如果有2 级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1 级:另外一种就是一次跳2 级.现在我们再来讨论一般情况:我们把n 级 ...
- 解析LINQ To Object
1.解剖Linq to object 此文转载自http://www.cnblogs.com/irenebbkiss/p/4155480.html LINQ想必大家都不陌生了,它 的出现使得我们的 ...
- 基于log4j的消息流的实现之二消息传递
在“基于log4j的消息流的实现之一消息获取”中获取日志消息的部分,修改如下: import org.apache.commons.collections.map.HashedMap; import ...
- 转:maven常用命令介绍
mvn 3.0.4 创建maven项目命令 mvn archetype:generate -DgroupId=damocles-autocredit -DartifactId=damocles ...