Rumah > pangkalan data > tutorial mysql > Bagaimanakah kaedah `select_related` Django boleh digunakan untuk mencapai kesan cantuman dalaman apabila bekerja dengan jadual berkaitan?

Bagaimanakah kaedah `select_related` Django boleh digunakan untuk mencapai kesan cantuman dalaman apabila bekerja dengan jadual berkaitan?

Mary-Kate Olsen
Lepaskan: 2024-10-31 05:51:02
asal
950 orang telah melayarinya

How can Django's `select_related` method be used to achieve an inner join effect when working with related tables?

Sambungan Dalaman dalam Django: Menyambung 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:

  • negara ke negara (kunci asing)
  • negara ke bandar (kunci asing)
  • penerbitan ke negara, negara dan bandar (kunci asing)

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

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

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

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!

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