[解決済み】Django - クエリ結果を制限する
2022-04-07 02:59:20
質問
あるモデルの過去10個のインスタンスを取得したいのですが、以下のようなコードがあります。
Model.objects.all().order_by('-id')[:10]
まず、すべてのインスタンスをピックアップして、最後の10個だけを取るというのは本当ですか? もっと効果的な方法はないのでしょうか?
どのように解決するのですか?
Django のクエリセットはレイジーです。つまり、クエリは具体的に結果を求めるときだけ、データベースをヒットします。
そのため、クエリの結果を印刷するか実際に使用するまでは、データベースにアクセスすることなく、さらにフィルタリングを行うことができます。
以下のように、このコードでは最後の10件だけを取得するために、1つのSQLクエリを実行するだけです。
In [19]: import logging
In [20]: l = logging.getLogger('django.db.backends')
In [21]: l.setLevel(logging.DEBUG)
In [22]: l.addHandler(logging.StreamHandler())
In [23]: User.objects.all().order_by('-id')[:10]
(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" ORDER BY "auth_user"."id" DESC LIMIT 10; args=()
Out[23]: [<User: hamdi>]
関連
-
[解決済み] Django の Model オブジェクトを、全てのフィールドをそのままに dict に変換します。
-
[解決済み] django Forms のラジオボタン
-
[解決済み] 2つのフィールド「unique」をカップルとして定義する方法
-
Pythonが表示される。TypeError: 期待される文字列またはバッファ
-
[解決済み] Django のモデルで on_delete は何をするのですか?
-
[解決済み] スケジュールされたジョブを設定する?
-
[解決済み] Djangoでローカルと本番の設定を管理する方法とは?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み】djangoのビジネスロジックとデータアクセスの分離
-
[解決済み】Django: モデルフィールドのリストを取得しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ImportError: 'django.utils' から名前 'six' をインポートできません。
-
[解決済み] Django Heroku - ModuleNotFoundError: django_heroku' という名前のモジュールはありません。
-
MultiValueDictKeyError at/add/ エラー解決
-
Pythonが表示される。TypeError: 期待される文字列またはバッファ
-
django queryset values&values_list
-
[解決済み] request.FILESからファイル名を取得するにはどうすればよいですか?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] MySQLで最後に実行されたクエリを表示する方法は?
-
[解決済み】Django MEDIA_URL と MEDIA_ROOT
-
[解決済み] Django restフレームワーク、同じModelViewSetで異なるシリアライザーを使用する。