python - 对查询集进行排序的好方法? - Django

标签 python django django-models

我想要做的是:

  • 获取得分最高的 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/

相关文章:

Django 预填表格

迄今为止 ISO 8601 的 python 字符串

PyQt4 看不到 C++ 实例化的 QApplication

python - 如何为每个子图添加标题

python - 如何在 PyCharm 中设置环境变量?

django - python-social-auth 与 Django : ImportError: No module named 'social_django'

python - 如何在 Django 管理表单 save_model 中获取字段值

python - 具有特定值的 DataFrame 回填

python - Django 子域

django-models - Django-编辑和更新数据库中的现有数据