我想要做的是:
获取得分最高的 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(*fields)
默认情况下,QuerySet
返回的结果按照模型 Meta 中 ordering
选项给出的排序元组排序。您可以使用 order_by
方法在每个 QuerySet 的基础上覆盖它。
示例:
ordered_authors = Author.objects.order_by('-score', 'last_name')[:30]
上述结果将按 score
降序排列,然后按 last_name
升序排列。 "-score"
前面的负号表示降序。隐含升序。
关于python - 对查询集进行排序的好方法? - Django ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2412770/