Django order_by два поля, с первым нулем поля последним - PullRequest
0 голосов
/ 12 марта 2020

Я хочу отсортировать набор запросов по двум полям, скажем, отметке времени и имени. У меня будет несколько записей, где отметка времени равна нулю, но у всех записей будет имя. Я хочу, чтобы все записи, имеющие метку времени, были первыми, отсортированы по метке времени, за которыми следуют все записи с нулевыми метками времени, но с дополнительной сортировкой по имени.

Пример отсортированных результатов:

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'). As c (nulls_last = True) )

Я просто не уверен, как получить там вторичное поле сортировки (имя).

1 Ответ

2 голосов
/ 12 марта 2020

Я думаю, что нашел решение:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...