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设计模式之观察者模式实例
Apr 26 Python
python处理文本文件并生成指定格式的文件
Jul 31 Python
python使用htmllib分析网页内容的方法
May 08 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
Django基于ORM操作数据库的方法详解
Mar 27 Python
python删除文本中行数标签的方法
May 31 Python
PyTorch 1.0 正式版已经发布了
Dec 13 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 Python
python使用正则来处理各种匹配问题
Dec 22 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
May 12 Python
python实现图片转字符画的完整代码
Feb 21 Python
python实战之90行代码写个猜数字游戏
Apr 22 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
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
jQuery使用手册之二 DOM操作
2007/03/24 Javascript
驱动事件的addEvent.js代码
2007/03/27 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
Bootstrap每天必学之响应式导航、轮播图
2016/04/25 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
python 简单的多线程链接实现代码
2016/08/28 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
python scatter函数用法实例详解
2020/02/11 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
python定义具名元组实例操作
2021/02/28 Python
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
C++面试题目
2013/06/25 面试题
医院护理人员的自我评价分享
2013/10/04 职场文书
运动会口号8字
2014/06/07 职场文书
幼儿园小班家长评语
2014/12/30 职场文书
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers
mysqldump进行数据备份详解
2022/07/15 MySQL