Python的Django框架中的数据过滤功能


Posted in Python onJuly 17, 2015

我们很少会一次性从数据库中取出所有的数据;通常都只针对一部分数据进行操作。 在Django API中,我们可以使用`` filter()`` 方法对数据进行过滤:

>>> Publisher.objects.filter(name='Apress')
[<Publisher: Apress>]

filter() 根据关键字参数来转换成 WHERE SQL语句。 前面这个例子 相当于这样:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE name = 'Apress';

你可以传递多个参数到 filter() 来缩小选取范围:

>>> Publisher.objects.filter(country="U.S.A.", state_province="CA")
[<Publisher: Apress>]

多个参数会被转换成 AND SQL从句, 因此上面的代码可以转化成这样:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE country = 'U.S.A.'
AND state_province = 'CA';

注意,SQL缺省的 = 操作符是精确匹配的, 其他类型的查找也可以使用:

>>> Publisher.objects.filter(name__contains="press")
[<Publisher: Apress>]

在 name 和 contains 之间有双下划线。和Python一样,Django也使用双下划线来表明会进行一些魔术般的操作。这里,contains部分会被Django翻译成LIKE语句:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE name LIKE '%press%';

其他的一些查找类型有:icontains(大小写无关的LIKE),startswith和endswith, 还有range(SQLBETWEEN查询)。

Python 相关文章推荐
Python中将字典转换为列表的方法
Sep 21 Python
利用Python破解斗地主残局详解
Jun 30 Python
python调用百度语音REST API
Aug 30 Python
pandas把所有大于0的数设置为1的方法
Jan 26 Python
Python多线程处理实例详解【单进程/多进程】
Jan 30 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
May 25 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
python中if嵌套命令实例讲解
Feb 25 Python
python实现求纯色彩图像的边框
Apr 08 Python
Python Pandas读取Excel日期数据的异常处理方法
Feb 28 Python
在Python的Django框架中更新数据库数据的方法
Jul 17 #Python
在Django框架中运行Python应用全攻略
Jul 17 #Python
Python的Django框架中的数据库配置指南
Jul 17 #Python
浅谈python中截取字符函数strip,lstrip,rstrip
Jul 17 #Python
在Django的视图中使用数据库查询的方法
Jul 16 #Python
详解Python的Django框架中的模版继承
Jul 16 #Python
Django中模版的子目录与include标签的使用方法
Jul 16 #Python
You might like
制作美丽的拉花
2021/03/03 冲泡冲煮
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
event对象的方法 兼容多浏览器
2009/06/27 Javascript
jQuery插件expander实现图片翻转特效
2015/05/21 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
详解JavaScript树结构
2017/01/09 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
vue中的过滤器及其时间格式化问题
2020/04/09 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
python的Template使用指南
2014/09/11 Python
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
python3.6数独问题的解决
2019/01/21 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
小学生元旦广播稿
2014/02/21 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
经销商会议开幕词
2016/03/04 职场文书
2019年大学生职业生涯规划书
2019/03/25 职场文书
接收函
2019/04/22 职场文书
如何撰写促销方案?
2019/07/05 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android