我想做的是这样的:
获得得分最高的30位作者(Author.objects.order_by('-score')[: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”表示降序。暗含升序。