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版快速排序的实现示例
Jul 02 Python
Python的requests网络编程包使用教程
Jul 11 Python
Django实现简单分页功能的方法详解
Dec 05 Python
使用pip发布Python程序的方法步骤
Oct 11 Python
详解python中的hashlib模块的使用
Apr 22 Python
Python生成MD5值的两种方法实例分析
Apr 26 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
Jun 17 Python
python反转列表的三种方式解析
Nov 08 Python
基于Python中的yield表达式介绍
Nov 19 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
pandas中DataFrame数据合并连接(merge、join、concat)
May 30 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
一个用php实现的获取URL信息的类
2007/01/02 PHP
PHP模板引擎smarty详细介绍
2015/05/26 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
提示$ is not defined错误分析及解决
2013/04/09 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
python文件名和文件路径操作实例
2017/09/29 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
python实现浪漫的烟花秀
2019/01/30 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
新闻专业个人自我评价
2013/09/21 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
工商管理专业自荐信
2014/06/03 职场文书
应届生求职信范文
2014/06/30 职场文书
国际金融专业自荐信
2014/07/05 职场文书
管理工程专业求职信
2014/08/10 职场文书
就业意向协议书
2015/01/29 职场文书
求职自我推荐信
2015/03/24 职场文书
创业计划书详解
2019/07/19 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python
Python pygame实现中国象棋单机版源码
2021/06/20 Python
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL