排序查询集的好方法?-Django

我想做的是这样的:

获得得分最高的30位作者(Author.objects.order_by('-score')[:30]

订购作者 last_name

回答:

关于什么

import operator

auths = Author.objects.order_by('-score')[:30]

ordered = sorted(auths, key=operator.attrgetter('last_name'))

Django 1.4及更高版本中,你可以通过提供多个字段进行订购。

参考:https : //docs.djangoproject.com/en/dev/ref/models/querysets/#order-by

order_by(*字段)

默认情况下,a返回的结果由模型的Meta中QuerySet的ordering选项给出的排序元组排序。你可以使用order_by方法基于每个QuerySet重写此方法。

例:

ordered_authors = Author.objects.order_by('-score', 'last_name')[:30]

上面的结果将按score降序排列,然后按last_name升序排列。前面的负号”-score”表示降序。暗含升序。

以上是 排序查询集的好方法?-Django 的全部内容, 来源链接: utcz.com/qa/399047.html

回到顶部