首页 >数据库 >mysql教程 >如何在 PostgreSQL 中使用 NULLS LAST 对 Django 查询结果进行排序?

如何在 PostgreSQL 中使用 NULLS LAST 对 Django 查询结果进行排序?

Linda Hamilton
Linda Hamilton原创
2024-12-30 22:32:11778浏览

How to Order Django Query Results with NULLS LAST in PostgreSQL?

在 Django 中使用“NULLS LAST”对查询结果进行排序

在使用 PostgreSQL 时,您可能会遇到希望对模型进行排序的场景使用“NULLS LAST”将非空值优先于空值的结果选项。

尝试和问题

使用 extra(order_by=('-price', 'NULLS LAST')) 的初始方法可能会导致错误,“无法将关键字“NULLS LAST”解析为

解决方案

要实现所需的排序行为,请利用 Django 1.11 中引入的以下解决方案:

from django.db.models import F
MyModel.objects.all().order_by(F('price').desc(nulls_last=True))

此语法使用Django提供的F表达式,允许您使用可定制的参数指定字段排序。 desc(nulls_last=True) 参数确保 null 值被视为排序结果中的最后一个元素。

参考

更多信息,请参阅官方版本 1.11 和 3.1 的 Django 文档:

  • Django 1.11: https://docs.djangoproject.com/en/dev/releases/1.11/#expression-asc-and-desc-nulls-first-and-nulls-last-parameters
  • Django 3.1:https:// /docs.djangoproject.com/en/3.1/ref/models/expressions/#using-f-to-sort-null-values

以上是如何在 PostgreSQL 中使用 NULLS LAST 对 Django 查询结果进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn