Django中对数据查询结果进行排序的方法


Posted in Python onJuly 17, 2015

在你的 Django 应用中,你或许希望根据某字段的值对检索结果排序,比如说,按字母顺序。 那么,使用 order_by() 这个方法就可以搞定了。

>>> Publisher.objects.order_by("name")
[<Publisher: Apress>, <Publisher: O'Reilly>]

跟以前的 all() 例子差不多,SQL语句里多了指定排序的部分:

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

我们可以对任意字段进行排序:

>>> Publisher.objects.order_by("address")
[<Publisher: O'Reilly>, <Publisher: Apress>]

>>> Publisher.objects.order_by("state_province")
[<Publisher: Apress>, <Publisher: O'Reilly>]

如果需要以多个字段为标准进行排序(第二个字段会在第一个字段的值相同的情况下被使用到),使用多个参数就可以了,如下:

>>> Publisher.objects.order_by("state_province", "address")
 [<Publisher: Apress>, <Publisher: O'Reilly>]

我们还可以指定逆向排序,在前面加一个减号 - 前缀:

>>> Publisher.objects.order_by("-name")
[<Publisher: O'Reilly>, <Publisher: Apress>]

尽管很灵活,但是每次都要用 order_by() 显得有点??隆 大多数时间你通常只会对某些 字段进行排序。 在这种情况下,Django让你可以指定模型的缺省排序方式:

class Publisher(models.Model):
  name = models.CharField(max_length=30)
  address = models.CharField(max_length=50)
  city = models.CharField(max_length=60)
  state_province = models.CharField(max_length=30)
  country = models.CharField(max_length=50)
  website = models.URLField()

  def __unicode__(self):
    return self.name

  **class Meta:**
    **ordering = ['name']**

现在,让我们来接触一个新的概念。 class Meta,内嵌于 Publisher 这个类的定义中(如果 class Publisher 是顶格的,那么 class Meta 在它之下要缩进4个空格--按 Python 的传统 )。你可以在任意一个 模型 类中使用 Meta 类,来设置一些与特定模型相关的选项。 在 附录B 中有 Meta 中所有可选项的完整参考,现在,我们关注 ordering 这个选项就够了。 如果你设置了这个选项,那么除非你检索时特意额外地使用了 order_by(),否则,当你使用 Django 的数据库 API 去检索时,Publisher对象的相关返回值默认地都会按 name 字段排序。

Python 相关文章推荐
Python中的迭代器与生成器高级用法解析
Jun 28 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
Python将list中的string批量转化成int/float的方法
Jun 26 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
Jun 18 Python
对Python获取屏幕截图的4种方法详解
Aug 27 Python
Python使用plt.boxplot() 参数绘制箱线图
Jun 04 Python
使用keras内置的模型进行图片预测实例
Jun 17 Python
Python实现播放和录制声音的功能
Aug 12 Python
基于python调用jenkins-cli实现快速发布
Aug 14 Python
java字符串格式化输出实例讲解
Jan 06 Python
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
Aug 30 Python
python 离散点图画法的实现
Apr 01 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
在Django的视图中使用数据库查询的方法
Jul 16 #Python
You might like
php之字符串变相相减的代码
2007/03/19 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
php使用session二维数组实例
2014/11/06 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
domReady的实现案例
2016/11/23 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
vuex的简单使用教程
2018/02/02 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
2019/01/07 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
python中cPickle用法例子分享
2014/01/03 Python
python根据距离和时长计算配速示例
2014/02/16 Python
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
python matplotlib库的基本使用
2020/09/23 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
护士自荐信
2013/10/25 职场文书
后勤人员岗位职责
2013/12/17 职场文书
大学生就业策划书范文
2014/04/04 职场文书
高中生评语大全
2014/04/25 职场文书
员工自我评价范文
2015/03/11 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书