Djangoのようなフレームワークでどのようにレイジーローディングが達成されているかを知ることに興味があります。参加を行う決定はいつ行われますか?そして、Djangoに熱心な読み込みを強制する方法はありますか?あなたがDjangoに熱心な負荷を強いる必要がある時がありますか?Django(および他のMVC/ORM)のレイジーローディング関係
4
A
答えて
11
一般的な答えは、実際にいくつかのレコードを求めるときにDjangoがクエリを実行するという決定を下すことです。最も一般的には、これはクエリーセット(for record in queryset:
)を反復するか、クエリーセットをリストに変換する組み込み関数list()
を使用することを意味します。
公式ドキュメントの詳細については、When QuerySets are evaluatedを参照してください。
それは__repr__
、__getitem__
と__iter__
などの特別な方法が正しいことを行うためにコード化されているdjango/db/models/query.py
、中QuerySet
というクラスを定義することによってこれを実現します。
あなただけのように、クエリセットに内蔵されたPythonのリスト機能を実行する積極的なロードを強制する必要がある場合:
qs = SomeModel.objects.all()
ql = list(qs)
list()
へのこの呼び出しは、DBクエリを実行し、メモリにすべてのオブジェクトをロードします。あなたがこれを行う必要があるのは非常にまれですが、テンプレートの複数の場所でクエリ結果を使用する必要があるケースもあります。リストに変換してテンプレートコンテキストでリストを渡すと、繰り返すテンプレート内のすべての場所で1回ではなく、1回だけクエリが実行されます。
関連する問題
- 1. MongoDB、Grails、および関係
- 2. Hibernate余分レイジーローディングおよびメモリ
- 3. Rubygems、Bundler、およびRVMの関係
- 4. 所有および未所有関係
- 5. 3ウェイ関係:ユーザー、LOBおよびロール
- 6. Djangoの関係
- 7. 流行NHibernate仕様、NHibernate 3.1、レイジーローディングおよびSQLイメージ列型
- 8. 外部ライブラリおよびプロジェクトの依存関係の質問
- 9. プロダクトのための関係、FrequenceOfUseおよびユーザーテーブル
- 10. SQLビュー、パフォーマンス、および1対多の関係からのカウント
- 11. CoreData 1対多および逆関係の問題
- 12. コアデータ関係、複数の管理オブジェクトコンテキストおよびスレッド
- 13. プロビジョニングプロファイル、証明書、アプリケーションID、およびキーの関係
- 14. JPA多型の関係、静的および動的型付け
- 15. レール隠しフィールドおよびまたはSQLデータベースの関係
- 16. NHibernate 3.2マッピングの選択肢、関係およびPOV?
- 17. Mavenの依存関係およびJavaサービスプロバイダインタフェース
- 18. モデルの関係および渡すオブジェクトが
- 19. django、phpmyadmin、およびmysql?
- 20. Django、jquery、およびmodelforms
- 21. Djangoの関係 - TemplateSyntaxerror
- 22. 私のDjangoのフィルタおよびテンプレート
- 23. 静的(iPhone)ライブラリ、配布、および依存関係
- 24. CruiseControl.net、SVN、Webサイトおよび依存関係
- 25. Djangoのモデルとの関係
- 26. ASP.NET MVCのマスターページ、ビュー、および部分ビューのビューモデル間の関係
- 27. Djangoは多くの関係
- 28. django 1対多の関係
- 29. CoreData:行数およびその他の集計関数のカウント方法
- 30. Djangoの多対多の関係との関係?