Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mendapatkan Data Bandar, Negeri dan Negara dengan Cekap daripada Jadual Berkaitan di Django?

Bagaimanakah Saya Boleh Mendapatkan Data Bandar, Negeri dan Negara dengan Cekap daripada Jadual Berkaitan di Django?

Barbara Streisand
Barbara Streisandasal
2024-10-29 09:28:02771semak imbas

How Can I Efficiently Retrieve City, State, and Country Data from Related Tables in Django?

Penyertaan Dalaman Berbilang Jadual dalam Django

Untuk memaparkan bandar, negeri dan negara penerbitan, yang disimpan dalam jadual berasingan, anda boleh melakukan gabungan dalaman dalam Django menggunakan kaedah select_related().

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

Pertanyaan ini akan menghasilkan pernyataan SQL yang serupa dengan:

<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>

Kursor pub yang dikembalikan mengandungi objek dengan nilai jadual berkaitan telah dipraisi, membolehkan anda mengaksesnya tanpa hits pangkalan data tambahan:

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

Pendekatan ini cekap dan menghalang pertanyaan yang tidak perlu untuk mendapatkan semula data berkaitan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Data Bandar, Negeri dan Negara dengan Cekap daripada Jadual Berkaitan di Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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