1. ホーム
  2. python

[解決済み] Django: クエリに "NULLS LAST" を追加する

2023-01-23 09:51:21

質問

Postgresqlの"NULLS LAST"オプションを使ってモデルをソートしたいと思います。 どのようにすればよいのでしょうか?

私は次のようなことを試しました。

MyModel.objects.all().extra(order_by=('-price', 'NULLS LAST'))

しかし、私は

キーワード 'NULLS LAST' をフィールドに解決できません。

どのように解決するのですか?

from django.db.models import F  
MyModel.objects.all().order_by(F('price').desc(nulls_last=True))

この機能は Django 1.11 で追加されました。

https://docs.djangoproject.com/en/dev/releases/1.11/

<ブロッククオート

nulls_first および nulls_last パラメータを Expression.asc() および desc() に追加し、NULL 値の順序を制御できるようにしました。 および desc() に null 値の順序を制御するためのパラメータを追加しました。

Django 3.1 のリファレンスです。 https://docs.djangoproject.com/en/3.1/ref/models/expressions/#using-f-to-sort-null-values