一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • 【Django】prefetch_related

4月からフリーランスになった中村です。
今までは2年程SESとして主にテスターを中心に経験し、現在は開発を行っています。

前回は参照時の取得方法であるselect_relatedについて記載しましたが、今回は逆参照の際の取得方法について記載しようと思います。

前回同様に以下のテーブルがあったとします。

book_table
・id
・book_name
・auther_id(FK=auher_table.id)

auher_table
・id
・auther_name

この場合に、auher_tableからbook_tableを取得するにはどうすればいいか。
auher_tableのidはbook_tableのauther_idに参照「されて」います。この際に、auher_tableから見たbook_tableを逆参照と呼びます。

逆参照の際はprefetch_relatedを使用します。以下はauher_tableからbook_tableを取得する際のコードです。
AuherTable.objects.prefetch_related(Prefetch("book_table_set", queryset=BookTable.objects.get(id=1)))

prefetch_relatedの場合は(table_name_set,table_objexts)で取得可能になります。
フィールド名のみ指定するselect_relatedとは異なる記述になります。

The following two tabs change content below.

中村 一貴

最新記事 by 中村 一貴 (全て見る)

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア