Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Anda Boleh Menyertai Jadual Berkaitan dengan Cekap dalam Model Django untuk Maklumat Penerbitan?

Bagaimanakah Anda Boleh Menyertai Jadual Berkaitan dengan Cekap dalam Model Django untuk Maklumat Penerbitan?

Susan Sarandon
Susan Sarandonasal
2024-10-30 11:12:49939semak imbas

How Can You Efficiently Join Related Tables in Django Models for Publication Information?

Membuat Gabungan Dalaman dalam Django

Isu: Menyertai Jadual Berkaitan dalam Model Berbeza

Anda ingin memaparkan bandar, negeri dan negara penerbitan maklumat dalam templat HTML. Walau bagaimanapun, butiran ini disimpan dalam jadual pangkalan data yang berasingan.

Memahami Model

Model yang berkaitan dalam fail models.py anda ialah:

  • negara: Negara kedai nama dan subdomain
  • negeri negara: Mengaitkan nama negeri dengan negara masing-masing
  • bandar: Memautkan nama bandar ke negeri yang mengandunginya
  • penerbitan: Mengandungi data penerbitan, termasuk rujukan kunci asing kepada negara, negeri dan bandar

Pertanyaan SQL dalam Python

Anda mahu menulis pertanyaan SQL yang setara dalam paparan Django anda menggunakan struktur berikut:

<code class="sql">SELECT p.user_id, p.title, c.cuntry_id, c.country_name, s.state_id, s.state_name, y.city_id, y.city_name
FROM publication AS p
INNER JOIN country AS c ON c.id = p.country_id
INNER JOIN countrystate AS s ON s.id = p.countrystate_id
INNER JOIN city AS y ON y.id = p.city_id</code>

Penyelesaian Menggunakan select_related()

Untuk melakukan gabungan dalaman dalam Django, gunakan kaedah select_related() pada set pertanyaan penerbitan:

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

Ini akan menghasilkan satu pertanyaan yang bergabung jadual penerbitan dengan jadual negara, negeri dan bandar yang berkaitan. Objek yang terhasil akan mempunyai akses kepada data yang digabungkan melalui atribut objek, menghapuskan keperluan untuk pertanyaan pangkalan data tambahan.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menyertai Jadual Berkaitan dengan Cekap dalam Model Django untuk Maklumat Penerbitan?. 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