Rumah > Artikel > pangkalan data > Bagaimanakah kaedah `select_related` Django boleh digunakan untuk mencapai kesan cantuman dalaman apabila bekerja dengan jadual berkaitan?
Untuk memaparkan data daripada berbilang jadual berkaitan dalam Django, cantuman dalaman selalunya diperlukan. Dalam artikel ini, kami akan meneroka cara melakukan gabungan dalaman menggunakan ORM Django (Object-Relational Mapper).
Hubungan Model
The models.py dalam kod yang disediakan mentakrifkan perhubungan jadual berikut:
Sertai Dalaman Menggunakan select_related
Untuk mencapai kesan cantuman dalaman, kaedah select_related Django boleh digunakan. Ia pra-memilih objek yang berkaitan bersama-sama dengan objek utama, mengurangkan bilangan pertanyaan pangkalan data yang diperlukan untuk mengakses data yang berkaitan.
Dalam views.py, kod berikut boleh digunakan untuk melakukan gabungan dalaman:
<code class="python">pubs = publication.objects.select_related('country', 'country_state', 'city')</code>
Memeriksa SQL Dijana
Menggunakan str(pubs.query), pertanyaan SQL yang dijana boleh diperiksa. Ia akan menyerupai pertanyaan SQL yang disediakan, dengan cantuman dalaman antara jadual:
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" )
Mengakses Data Berkaitan
Selepas cantuman dalaman, data berkaitan boleh diakses melalui atribut objek model masing-masing. Contohnya, untuk memaparkan nama bandar bagi setiap penerbitan:
{% for p in pubs %} {{ p.city.city_name}} # p.city has been populated in the initial query # ... {% endfor %}
Dengan menggunakan select_related Django, cantuman dalaman boleh dilaksanakan dengan cekap untuk mendapatkan semula data daripada jadual berkaitan, mengurangkan pertanyaan pangkalan data dan meningkatkan prestasi.
Atas ialah kandungan terperinci Bagaimanakah kaedah `select_related` Django boleh digunakan untuk mencapai kesan cantuman dalaman apabila bekerja dengan jadual berkaitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!