KJR020 KJR020's Blog

Django ORMの`prefetch_related`と`select_related`について

DjangoのORMについて、prefetch_relatedselect_relatedについて調べたので、まとめる。

背景

Django ORMの使い方でprefetch_relatedとselect_relatedについて違いや使い所を理解していなかった。 この機会に調べてみる。

概要

概要の整理をする。 prefetch_relatedselect_relatedは、クエリセットのメソッドで、リレーションシップを持つモデルのデータを取得する際に使う。 前提として、DjangoにおいてQuerySetは遅延評価されるため、クエリが実行されるまでデータベースにアクセスされない。 prefetch_relatedselect_relatedは、クエリを実行する前に、リレーションシップを持つモデルのデータを取得するためのメソッドらしい。 N+1問題を解決するために使われることが多い。

そのうえで、prefetch_relatedselect_relatedの違いを理解して、使い方を覚えていきたい。

Esc
キーワードを入力して検索