ホームページ  >  記事  >  データベース  >  Django で select_relative() を使用して複数のテーブルから都市、州、国の詳細を表示する方法

Django で select_relative() を使用して複数のテーブルから都市、州、国の詳細を表示する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 08:09:27748ブラウズ

How to Display City, State, and Country Details from Multiple Tables Using select_related() in Django?

Django で複数のテーブルを結合して市、州、国を表示する

はじめに

データベース クエリでは、多くの場合、複数のテーブルを結合する必要があります。テーブルを使用して関連データにアクセスします。 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() を使用する利点

  • データベース クエリの数が減少します。
  • 改善されました関連オブジェクトへのアクセスのパフォーマンス。
  • 生の SQL 結合と比較した単純さと読みやすさ。

以上がDjango で select_relative() を使用して複数のテーブルから都市、州、国の詳細を表示する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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