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编程中@property装饰器的用法
Jun 20 Python
python+opencv实现动态物体追踪
Jan 09 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
python批量赋值操作实例
Oct 22 Python
python 判断参数为Nonetype类型或空的实例
Oct 30 Python
python截取两个单词之间的内容方法
Dec 25 Python
Python变量类型知识点总结
Feb 18 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
Nov 05 Python
基于pygame实现童年掌机打砖块游戏
Feb 25 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 Python
Python run()函数和start()函数的比较和差别介绍
May 03 Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 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
PHP中for循环语句的几种变型
2007/03/16 PHP
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
PHP sprintf()函数用例解析
2011/05/18 PHP
WordPress中缩略图的使用以及相关技巧
2015/11/24 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
js获取url中&quot;?&quot;后面的字串方法
2014/05/15 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
python实现微信小程序自动回复
2018/09/10 Python
python实现大文件分割与合并
2019/07/22 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
药学职务聘任书
2014/03/29 职场文书
客户答谢会致辞
2015/01/20 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
《所见》教学反思
2016/02/23 职场文书
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS
tree shaking对打包体积优化及作用
2022/07/07 Java/Android