Rumah > Artikel > pangkalan data > Bagaimana untuk Memaparkan Butiran Bandar, Negeri dan Negara daripada Berbilang Jadual Menggunakan select_related() dalam 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>
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>
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>
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>
Faedah Menggunakan select_related()
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!