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中os和shutil模块实用方法集锦
May 13 Python
Python语言实现机器学习的K-近邻算法
Jun 11 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
python中import学习备忘笔记
Jan 24 Python
开源Web应用框架Django图文教程
Mar 09 Python
python决策树之CART分类回归树详解
Dec 20 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
Apr 22 Python
Mac安装python3的方法步骤
Aug 09 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
使用 Python 处理3万多条数据只要几秒钟
Jan 19 Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 Python
Django权限设置及验证方式
May 13 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(1)
2006/10/09 PHP
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
js常用代码段整理
2011/11/30 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
JavaScript async/await原理及实例解析
2020/12/02 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
Python字符转换
2008/09/06 Python
Django中使用locals()函数的技巧
2015/07/16 Python
深入理解Python中的内置常量
2017/05/20 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
python程序封装为win32服务的方法
2021/03/07 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
便利店的创业计划书
2014/01/15 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
2014年财政局工作总结
2014/12/09 职场文书
以权谋私检举信范文
2015/03/02 职场文书