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函数形参用法实例分析
Aug 04 Python
深入理解Python中的内置常量
May 20 Python
python中reload(module)的用法示例详解
Sep 15 Python
[原创]python爬虫(入门教程、视频教程)
Jan 08 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
Python 获取div标签中的文字实例
Dec 20 Python
Python实现滑动平均(Moving Average)的例子
Aug 24 Python
让你的Python代码实现类型提示功能
Nov 19 Python
用Python做一个久坐提醒小助手的示例代码
Feb 10 Python
在python中对于bool布尔值的取反操作
Dec 11 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
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
小程序云开发实战小结
2018/10/25 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python List cmp()知识点总结
2019/02/18 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
python3.7添加dlib模块的方法
2020/07/01 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
Python LMDB库的使用示例
2021/02/14 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
经典c++面试题二
2015/08/14 面试题
MySQL面试题目集锦
2016/04/14 面试题
文明礼仪小标兵事迹
2014/01/12 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
MySQL 十大常用字符串函数详解
2021/06/30 MySQL
关于JavaScript轮播图的实现
2021/11/20 Javascript
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers