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中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
Python实现以时间换空间的缓存替换算法
Feb 19 Python
Python的collections模块中namedtuple结构使用示例
Jul 07 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
pandas重新生成索引的方法
Nov 06 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
python 使用cx-freeze打包程序的实现
Mar 14 Python
基于PyQT实现区分左键双击和单击
May 19 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
Jun 30 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
python logging模块的使用详解
Oct 23 Python
Python集合set()使用的方法详解
Mar 18 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
php批量删除数据
2007/01/18 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
js兼容标准的表格变色效果
2008/06/28 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
css配合jquery美化 select
2013/11/29 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
react 原生实现头像滚动播放的示例
2020/04/21 Javascript
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
HTML5的新特性(1)
2016/03/03 HTML / CSS
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
函授毕业个人自我评价
2014/02/20 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers