Django框架中数据的连锁查询和限制返回数据的方法


Posted in Python onJuly 17, 2015

连锁查询

通常我们需要同时进行过滤和排序查询的操作。 因此,你可以简单地写成这种“链式”的形式:

>>> Publisher.objects.filter(country="U.S.A.").order_by("-name")
[<Publisher: O'Reilly>, <Publisher: Apress>]

你应该没猜错,转换成SQL查询就是 WHERE 和 ORDER BY 的组合:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE country = 'U.S.A'
ORDER BY name DESC;

限制返回的数据

另一个常用的需求就是取出固定数目的记录。 想象一下你有成千上万的出版商在你的数据库里, 但是你只想显示第一个。 你可以使用标准的Python列表裁剪语句:

>>> Publisher.objects.order_by('name')[0]
<Publisher: Apress>

这相当于:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
ORDER BY name
LIMIT 1;

类似的,你可以用Python的range-slicing语法来取出数据的特定子集:

>>> Publisher.objects.order_by('name')[0:2]

这个例子返回两个对象,等同于以下的SQL语句:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
ORDER BY name
OFFSET 0 LIMIT 2;

注意,不支持Python的负索引(negative slicing):

>>> Publisher.objects.order_by('name')[-1]
Traceback (most recent call last):
 ...
AssertionError: Negative indexing is not supported.

虽然不支持负索引,但是我们可以使用其他的方法。 比如,稍微修改 order_by() 语句来实现:

>>> Publisher.objects.order_by('-name')[0]

Python 相关文章推荐
在Python的Django框架中用流响应生成CSV文件的教程
May 02 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
详解Python中for循环是如何工作的
Jun 30 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
Nov 30 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Django 中自定义 Admin 样式与功能的实现方法
Jul 04 Python
浅析PyTorch中nn.Module的使用
Aug 18 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
Python常用断言函数实例汇总
Nov 30 Python
Pycharm 跳转回之前所在页面的操作
Feb 05 Python
Python3爬虫RedisDump的安装步骤
Feb 20 Python
Django中对数据查询结果进行排序的方法
Jul 17 #Python
在Python的Django框架中获取单个对象数据的简单方法
Jul 17 #Python
Python的Django框架中的数据过滤功能
Jul 17 #Python
在Python的Django框架中更新数据库数据的方法
Jul 17 #Python
在Django框架中运行Python应用全攻略
Jul 17 #Python
Python的Django框架中的数据库配置指南
Jul 17 #Python
浅谈python中截取字符函数strip,lstrip,rstrip
Jul 17 #Python
You might like
linux下为php添加curl扩展的方法
2011/07/29 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
jQuery 性能优化指南(2)
2009/05/21 Javascript
使用js画图之画切线
2015/01/12 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
前端Electron新手入门教程详解
2019/06/21 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python中的自省(反射)详解
2015/06/02 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
Python程序运行原理图文解析
2018/02/10 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
XML文档面试题
2015/08/05 面试题
大学生党课思想汇报
2013/12/29 职场文书
应届大学生简历中的自我评价
2014/01/15 职场文书
《争吵》教学反思
2014/02/15 职场文书
北体毕业生求职信
2014/02/28 职场文书
商铺租赁意向书
2014/04/01 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
解决mysql的int型主键自增问题
2021/07/15 MySQL
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技