【问题标题】:Django order_by two fields, with first field nulls lastDjango order_by 两个字段,第一个字段最后为空
【发布时间】:2020-06-24 22:29:37
【问题描述】:

我想按两个字段对查询集进行排序,比如说时间戳和名称。 我将有许多时间戳为空的记录,但所有记录都有一个名称。 我希望所有有时间戳的记录排在第一位,按时间戳排序,然后是所有时间戳为空的记录,但按名称进行次要排序。

排序结果示例:

Timestamp   Name
---------   ----------
10:00       John
10:00       Kevin
10:00       Xavier
11:00       Arnold
12:00       Steve
(null)      Abe
(null)      Ben
(null)      Catherine
(null)      Zeke

我知道在按单个字段排序时可以将空值放在最后,如下所示:

Person.objects.order_by(F('timestamp').asc(nulls_last=True))

我只是不确定如何在其中获取辅助排序字段(名称)。

【问题讨论】:

    标签: python django sorting django-models


    【解决方案1】:

    我想我找到了解决办法:

    Person.objects.order_by(F('timestamp').asc(nulls_last=True), 'name')

    【讨论】:

    • 只是为了添加到这个解决方案中。 F 类的导入是 from django.db.models import F
    猜你喜欢
    • 2019-06-04
    • 2014-06-20
    • 2016-08-12
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多