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 yield机制的异步操作同步化编程模型
Mar 18 Python
实例讲解Python中SocketServer模块处理网络请求的用法
Jun 28 Python
Python生成密码库功能示例
May 23 Python
解决python文件字符串转列表时遇到空行的问题
Jul 09 Python
Python使用修饰器执行函数的参数检查功能示例
Sep 26 Python
PyQt5固定窗口大小的方法
Jun 18 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
对Tensorflow中tensorboard日志的生成与显示详解
Feb 04 Python
Python线程threading模块用法详解
Feb 26 Python
python json 递归打印所有json子节点信息的例子
Feb 27 Python
如何让python的运行速度得到提升
Jul 08 Python
详解python 内存优化
Aug 17 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入门速成(2)
2006/10/09 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
Smarty使用自定义资源的方法
2015/08/08 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
vue中的使用token的方法示例
2020/03/10 Javascript
python异常和文件处理机制详解
2016/07/19 Python
python之消除前缀重命名的方法
2018/10/21 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
Django设置Postgresql的操作
2020/05/14 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
耐克美国官网:Nike.com
2016/08/01 全球购物
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
GUESS德国官网:美国牛仔服装品牌
2017/02/14 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
机械制造专业毕业生求职信
2014/03/02 职场文书
论文诚信承诺书
2014/05/23 职场文书
跳槽求职信范文
2014/05/26 职场文书
综合管理员岗位职责
2015/02/11 职场文书
原料仓管员岗位职责
2015/04/01 职场文书