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爬虫入门教程之糗百图片爬虫代码分享
Sep 02 Python
解密Python中的描述符(descriptor)
Jun 03 Python
python字符串,数值计算
Oct 05 Python
Python自动化运维之IP地址处理模块详解
Dec 10 Python
Python中str.join()简单用法示例
Mar 20 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
Python将一个Excel拆分为多个Excel
Nov 07 Python
python中嵌套函数的实操步骤
Feb 27 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
django+echart数据动态显示的例子
Aug 12 Python
Django Channel实时推送与聊天的示例代码
Apr 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
基于mysql的论坛(6)
2006/10/09 PHP
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
PHP集成FCK的函数代码
2008/09/27 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
jQuery select控制插件
2009/08/17 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
Python中的fileinput模块的简单实用示例
2015/07/09 Python
python利用datetime模块计算时间差
2015/08/04 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
flask实现验证码并验证功能
2019/12/05 Python
Python3 集合set入门基础
2020/02/10 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
python def 定义函数,调用函数方式
2020/06/02 Python
Python代码注释规范代码实例解析
2020/08/14 Python
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
财会自我鉴定范文
2013/12/27 职场文书
小学生学习感言
2014/03/10 职场文书
优秀安全员事迹材料
2014/05/11 职场文书
预防传染病方案
2014/06/14 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
杨善洲电影观后感
2015/06/04 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL