Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memaparkan Butiran Bandar, Negeri dan Negara daripada Berbilang Jadual Menggunakan select_related() dalam Django?

Bagaimana untuk Memaparkan Butiran Bandar, Negeri dan Negara daripada Berbilang Jadual Menggunakan select_related() dalam Django?

Susan Sarandon
Lepaskan: 2024-10-30 08:09:27
asal
848 orang telah melayarinya

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

Menyertai Berbilang Jadual untuk Menunjukkan Bandar, Negeri dan Negara di Django

Pengenalan

Pertanyaan pangkalan data selalunya melibatkan penyertaan berbilang jadual untuk mengakses data berkaitan. Dalam Django, gabungan tersebut boleh dicapai menggunakan kaedah select_related(). Artikel ini menunjukkan cara menggunakan select_related() untuk melakukan gabungan dalaman dalam Django dan memaparkan nama bandar, negeri dan negara yang dikaitkan dengan penerbitan.

Menyambungkan Jadual dalam Model

Fail models.py mentakrifkan kelas model pangkalan data untuk jadual yang berbeza:

<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>
Salin selepas log masuk

Mengambil Penerbitan dalam Paparan

Penerbitan() lihat dalam views.py mengambil penerbitan:

<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>
Salin selepas log masuk

Melaksanakan Inner Join dengan select_related()

Untuk melakukan inner join, anda boleh menggunakan kaedah select_related() seperti berikut:

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

Barisan ini bergabung dengan jadual Penerbitan dengan jadual Negara, Negeri dan Bandar dan pramuatnya untuk kegunaan kemudian.

Mengakses Data Berkaitan

Setelah penggabungan dilakukan, anda boleh mengakses data berkaitan melalui objek model. Contohnya, dalam templat:

<code class="html">{% for p in pubs %}
     {{ p.city.city_name}}  # p.city has been populated in the initial query
     # ...
{% endfor %}</code>
Salin selepas log masuk

Faedah Menggunakan select_related()

  • Mengurangkan bilangan pertanyaan pangkalan data.
  • Diperbaiki prestasi untuk akses objek yang berkaitan.
  • Kesederhanaan dan kebolehbacaan berbanding gabungan SQL mentah.

Atas ialah kandungan terperinci Bagaimana untuk Memaparkan Butiran Bandar, Negeri dan Negara daripada Berbilang Jadual Menggunakan select_related() dalam Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan