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