はじめに
データベース クエリでは、多くの場合、複数のテーブルを結合する必要があります。テーブルを使用して関連データにアクセスします。 Django では、このような結合は select_relative() メソッドを使用して実現できます。この記事では、select_popular() を使用して Django で内部結合を実行し、パブリケーションに関連付けられた都市、州、国の名前を表示する方法を説明します。
モデル内のテーブルの接続
models.py ファイルは、さまざまなテーブルのデータベース モデル クラスを定義します。
<code class="python">class Country(models.Model): country_name = models.CharField(max_length=200, null=True) class CountryState(models.Model): state_name = models.CharField(max_length=200, null=True) country = models.ForeignKey(Country, on_delete=models.CASCADE, null=True) class City(models.Model): city_name = models.CharField(max_length=200, null=True) countrystate = models.ForeignKey(CountryState, on_delete=models.CASCADE, null=True) class Publication(models.Model): country = models.ForeignKey(Country, on_delete=models.CASCADE, null=True) countrystate = models.ForeignKey(CountryState, on_delete=models.CASCADE, null=True) city = models.ForeignKey(City, on_delete=models.CASCADE, null=True)</code>
ビューでのパブリケーションの取得
The Publications() views.py のビューがパブリケーションを取得します:
<code class="python">def publications(request): mypublications = publication.objects.filter(user_id=request.session['account_id']) return render(request, 'blog/mypublications.html', {'plist': mypublications})</code>
select_popular() を使用した内部結合の実行
内部結合を実行するには、select_popular() メソッドを使用できます。次のように:
<code class="python">pubs = publication.objects.select_related('country', 'country_state', 'city')</code>
この行は、Publication テーブルを Country、 CountryState、City テーブルと結合し、後で使用できるようにそれらを事前にロードします。
関連データへのアクセス
結合が実行されると、モデル オブジェクトを通じて関連データにアクセスできるようになります。たとえば、テンプレートの場合:
<code class="html">{% for p in pubs %} {{ p.city.city_name}} # p.city has been populated in the initial query # ... {% endfor %}</code>
select_popular() を使用する利点
以上がDjango で select_relative() を使用して複数のテーブルから都市、州、国の詳細を表示する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。