对查询集进行排序的好方法? - 姜戈

2024-02-02

我想做的是:

  • 获得得分最高的 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 https://docs.djangoproject.com/en/dev/ref/models/querysets/#order-by

order_by(*字段)

默认情况下,返回的结果QuerySet按给出的排序元组排序ordering模型元数据中的选项。您可以使用以下方法在每个查询集的基础上覆盖它:order_by method.

Example:

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

上面的结果将按以下顺序排序score下降,然后由last_name上升。前面的负号"-score"表示降序排列。隐含升序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对查询集进行排序的好方法? - 姜戈 的相关文章

随机推荐