7

デフォルトでは、PostgreSQL は NULL 値を最大値と見なし、降順クエリの場合は最初に、昇順クエリの場合は最後に並べ替えます。

'NULLS LAST' または 'NULLS FIRST' を指定することにより、クエリごとに、またはインデックスの作成時にこの動作を変更できます。

生のクエリを使用せずに、これを Django ORM と組み合わせて使用​​するにはどうすればよいですか? つまり、query_set に のようなものを追加する場合、null のqs.order_by("-publish_start")並べ替えを指定するにはどうすればよいですか? または、代わりに、フィールド/インデックスの宣言時に。

4

1 に答える 1

10

extraを使用して、null チェックをブール値にし、ブール値の並べ替えfalse < trueが普遍的であると思われる場合に、どちらの方法でも (最高値または最低値として null) 動作する DB エンジンに対応する方法を見つけました。

qs = qs.extra(select={'null_start': "publish_start is null"},
              order_by=['null_start', '-publish_start'])
于 2012-09-27T23:32:09.750 に答える