默认情况下,PostgreSQL 将 NULL 值视为最高值,因此对于降序查询,首先对它们进行排序,对于升序查询,最后对它们进行排序。
您可以通过指定“NULLS LAST”或“NULLS FIRST”在每个查询或创建索引时修改此行为。
如何将其与 Django ORM 结合使用,而不需要使用原始查询?
IE。当我添加到我的 query_set 中时qs.order_by("-publish_start")
,如何指定空值排序?或者,作为替代方案,根据字段/索引声明。
我想出了一种方法,可以通过使用以下方式来适应以任何方式工作的数据库引擎(空作为最高或最低值)extra
,使 null 检查布尔值,以及对布尔值进行排序时false < true
似乎是普遍的:
qs = qs.extra(select={'null_start': "publish_start is null"},
order_by=['null_start', '-publish_start'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)