ホームページ  >  記事  >  データベース  >  パブリケーション情報のために Django モデルの関連テーブルを効率的に結合するにはどうすればよいですか?

パブリケーション情報のために Django モデルの関連テーブルを効率的に結合するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 11:12:49937ブラウズ

How Can You Efficiently Join Related Tables in Django Models for Publication Information?

Django での内部結合の作成

問題: 異なるモデル内の関連テーブルの結合

出版物の市、州、国を表示したいと考えています。 HTML テンプレート内の情報。ただし、これらの詳細は別のデータベース テーブルに保存されます。

モデルについて

models.py ファイル内の関連モデルは次のとおりです。

  • country: 国を保存します。名前とサブドメイン
  • countrystate: 州名をそれぞれの国に関連付けます
  • city: 都市名をそれらを含む州にリンクします
  • publication: への外部キー参照を含む出版データが含まれます。 country、countrystate、city

Python の SQL クエリ

次の構造を使用して、Django ビューで同等の SQL クエリを作成したいとします:

<code class="sql">SELECT p.user_id, p.title, c.cuntry_id, c.country_name, s.state_id, s.state_name, y.city_id, y.city_name
FROM publication AS p
INNER JOIN country AS c ON c.id = p.country_id
INNER JOIN countrystate AS s ON s.id = p.countrystate_id
INNER JOIN city AS y ON y.id = p.city_id</code>

select_popular() を使用した解決策

Django で内部結合を実行するには、パブリケーション クエリセットで select_relative() メソッドを使用します。

<code class="python">pubs = publication.objects.select_related('country', 'country_state', 'city')</code>

これにより、結合する単一のクエリが生成されます。関連する国、州、都市のテーブルを含む出版物テーブル。結果として得られるオブジェクトは、オブジェクト属性を介して結合されたデータにアクセスできるため、追加のデータベース クエリの必要がなくなります。

以上がパブリケーション情報のために Django モデルの関連テーブルを効率的に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。