Django で内部結合を実行する方法
Django アプリケーションで複数のテーブルから相互接続されたデータを表示するには、次のことが必要になる場合があります。内部結合操作を実行します。 select_relative メソッドを活用すると、これを簡単に実現できます。
次のシナリオを考えてみましょう。出版物の都市、州、国の名前を HTML テンプレートに表示したいとします。ただし、これらの詳細は別のテーブルに保存されます。内部結合を使用してこの情報を取得するには、次のように select_popular メソッドを利用できます:
<code class="python">pubs = publication.objects.select_related('country', 'country_state', 'city')</code>
このクエリは次のような SQL ステートメントを生成します:
<code class="sql">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" ) </code>
取得された値は自動的に ORM モデル インスタンスに変換されます。これにより、次に示すように、ループ内のそれぞれのオブジェクトを通じて関連するテーブル値にアクセスできるようになります。
<code class="html">{% for p in pubs %} {{ p.city.city_name}} # p.city has been populated in the initial query # ... {% endfor %}</code>
この手法を採用することで、複数のテーブルから効率的にデータをフェッチし、相互接続された情報を HTML に表示できます。事前に選択された順方向リレーションに対する追加のデータベース ヒットを回避しながら、テンプレートを作成します。
以上が「select_popular」を使用して Django で内部結合を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。