Wymyśliłem sposób, który obsługuje silniki DB, które działają w obie strony (null jako najwyższa lub najniższa wartość) za pomocą extra
, co oznacza, że wartość null check jest wartością logiczną, a podczas sortowania wartości logicznych false < true
wydaje się być uniwersalny:
qs = qs.extra(select={'null_start': "publish_start is null"},
order_by=['null_start', '-publish_start'])