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

Susan Sarandon
Lepaskan: 2024-10-30 11:12:49
asal
944 orang telah melayarinya

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

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

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!

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!