Django QuerySet 排序
排序
为了对查询集进行排序,Django 使用 order_by()
方法:
实例
按 firstname 的字母顺序排列结果:
mydata = Members.objects.all().order_by('firstname').values()
结果
<QuerySet [
{'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes'},
{'id': 4, 'firstname': 'Lene', 'lastname': 'Refsnes'},
{'id': 3, 'firstname': 'Linus', 'lastname': 'Refsnes'},
{'id': 5, 'firstname': 'Stalikken', 'lastname': 'Refsnes'},
{'id': 2, 'firstname': 'Tobias', 'lastname': 'Refsnes'}
]>
{'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes'},
{'id': 4, 'firstname': 'Lene', 'lastname': 'Refsnes'},
{'id': 3, 'firstname': 'Linus', 'lastname': 'Refsnes'},
{'id': 5, 'firstname': 'Stalikken', 'lastname': 'Refsnes'},
{'id': 2, 'firstname': 'Tobias', 'lastname': 'Refsnes'}
]>
在 SQL 中,上述语句的编写方式如下:
SELECT * FROM members ORDER BY firstname;
倒序排列
默认情况下,结果按升序排序(首先是最小值),要想更改为降序(首先是最大值),请在字段名前使用 -
减号(NOT):
实例
将结果 firstname 降序排列:
mydata = Members.objects.all().order_by('-firstname').values()
结果
<QuerySet [
{'id': 2, 'firstname': 'Tobias', 'lastname': 'Refsnes'},
{'id': 5, 'firstname': 'Stalikken', 'lastname': 'Refsnes'},
{'id': 3, 'firstname': 'Linus', 'lastname': 'Refsnes'},
{'id': 4, 'firstname': 'Lene', 'lastname': 'Refsnes'},
{'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes'}
]>
{'id': 2, 'firstname': 'Tobias', 'lastname': 'Refsnes'},
{'id': 5, 'firstname': 'Stalikken', 'lastname': 'Refsnes'},
{'id': 3, 'firstname': 'Linus', 'lastname': 'Refsnes'},
{'id': 4, 'firstname': 'Lene', 'lastname': 'Refsnes'},
{'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes'}
]>
在 SQL 中,上述语句的编写方式如下:
SELECT * FROM members ORDER BY firstname DESC;
多字段排序
要按多个字段排序,请 order_by()
方法中用逗号分隔字段名:
实例
按 lastname 升序排列结果,然后按 id 降序排列:
mydata = Members.objects.all().order_by('lastname', '-id').values()
结果
<QuerySet [
{'id': 2, 'firstname': 'Tobias', 'lastname': 'Refsnes'},
{'id': 5, 'firstname': 'Stalikken', 'lastname': 'Refsnes'},
{'id': 3, 'firstname': 'Linus', 'lastname': 'Refsnes'},
{'id': 4, 'firstname': 'Lene', 'lastname': 'Refsnes'},
{'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes'}
]>
{'id': 2, 'firstname': 'Tobias', 'lastname': 'Refsnes'},
{'id': 5, 'firstname': 'Stalikken', 'lastname': 'Refsnes'},
{'id': 3, 'firstname': 'Linus', 'lastname': 'Refsnes'},
{'id': 4, 'firstname': 'Lene', 'lastname': 'Refsnes'},
{'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes'}
]>
在 SQL 中,上述语句的编写方式如下:
SELECT * FROM members ORDER BY lastname ASC, id DESC;