Rumah > Artikel > pangkalan data > Bagaimana untuk Melakukan Inner Join dalam Django Menggunakan `select_related`?
Cara Melaksanakan Inner Join dalam Django
Untuk mempamerkan data yang saling berkaitan daripada berbilang jadual dalam aplikasi Django anda, anda mungkin menghadapi keperluan untuk melakukan operasi cantum dalaman. Dengan memanfaatkan kaedah select_related, anda boleh mencapainya dengan mudah.
Pertimbangkan senario berikut: anda ingin memaparkan nama bandar, negeri dan negara penerbitan dalam templat HTML. Walau bagaimanapun, butiran ini disimpan dalam jadual berasingan. Untuk mendapatkan semula maklumat ini menggunakan gabungan dalaman, anda boleh menggunakan kaedah select_related seperti berikut:
<code class="python">pubs = publication.objects.select_related('country', 'country_state', 'city')</code>
Pertanyaan ini akan menghasilkan pernyataan SQL yang serupa dengan yang berikut:
<code class="sql">SELECT "publication"."id", "publication"."title", ..., "country"."country_name", ... FROM "publication" INNER JOIN "country" ON ( "publication"."country_id" = "country"."id" ) INNER JOIN "countrystate" ON ( "publication"."countrystate_id" = "countrystate"."id" ) INNER JOIN "city" ON ( "publication"."city_id" = "city"."id" ) </code>
Pertanyaan yang diambil nilai akan ditukar secara automatik menjadi contoh model ORM. Ini membolehkan anda mengakses nilai jadual yang berkaitan melalui objek masing-masing dalam satu gelung, seperti yang ditunjukkan di bawah:
<code class="html">{% for p in pubs %} {{ p.city.city_name}} # p.city has been populated in the initial query # ... {% endfor %}</code>
Dengan menggunakan teknik ini, anda boleh mengambil data daripada berbilang jadual dengan cekap dan membentangkan maklumat yang saling berkaitan dalam HTML anda templat, sambil mengelakkan hits pangkalan data tambahan untuk hubungan hadapan yang telah dipilih sebelumnya.
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Inner Join dalam Django Menggunakan `select_related`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!