Django で内部結合を実行する方法
Django アプリケーションで複数のテーブルの相互接続されたデータを表示するには、次のことが必要になる場合があります。内部結合操作を実行します。 select_relative メソッドを活用すると、これを簡単に実現できます。
次のシナリオを考えてみましょう。出版物の都市、州、国の名前を HTML テンプレートに表示したいとします。ただし、これらの詳細は別のテーブルに保存されます。内部結合を使用してこの情報を取得するには、次のように select_relative メソッドを利用できます:
pubs = publication.objects.select_related('country', 'country_state', 'city')
このクエリは、
SELECT "publication"."id", "publication"."title", ..., "country"."country_name", ...
FROM "publication"
INNER JOIN "country" ON ( "publication"."country_id" = "country"."id" )
INNER JOIN "countrystate" ON ( "publication"."countrystate_id" = "countrystate"."id" )
INNER JOIN "city" ON ( "publication"."city_id" = "city"."id" )
取得した値は自動的に ORM モデル インスタンスに変換されます。これにより、以下に示すように、ループ内のそれぞれのオブジェクトを通じて関連するテーブル値にアクセスできるようになります:
{% for p in pubs %}
{{ p.city.city_name}} # p.city has been populated in the initial query
# ...
{% endfor %}
この手法を採用すると、複数のテーブルからデータを効率的にフェッチし、相互接続された情報を HTML テンプレートに表示できると同時に、事前に選択された前方リレーションに対する追加のデータベース ヒットを回避できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3