Rumah > pangkalan data > tutorial mysql > Bagaimana Mencari Jabatan Dengan Cekap Tanpa Sukarelawan Menggunakan ORM Django?

Bagaimana Mencari Jabatan Dengan Cekap Tanpa Sukarelawan Menggunakan ORM Django?

Mary-Kate Olsen
Lepaskan: 2024-12-30 16:11:12
asal
477 orang telah melayarinya

How to Efficiently Find Departments Without Volunteers Using Django's ORM?

LEFT JOIN dalam Django ORM

Operasi gabungan kiri biasanya digunakan untuk mendapatkan semula data daripada berbilang jadual dengan menggabungkan baris dengan lajur yang sepadan. Dalam Django, anda boleh mencapai ini menggunakan kaedah penapis() dan values_list().

Pertimbangkan senario berikut: anda mempunyai tiga model - Sukarelawan, Jabatan dan Sukarelawan Jabatan. Seorang sukarelawan boleh tergolong dalam beberapa jabatan, dan satu jabatan boleh mempunyai beberapa sukarelawan. Anda ingin mendapatkan semula semua jabatan yang tidak mempunyai sebarang sukarelawan yang ditugaskan.

Salah satu cara untuk mencapai ini adalah melalui pertanyaan SQL mentah:

SELECT 
    d.name 
FROM   
    vsp_department AS d
LEFT JOIN vsp_departmentvolunteer AS dv
ON d.id = dv.department_id  
WHERE
    dv.department_id IS NULL;
Salin selepas log masuk

Walau bagaimanapun, Django menyediakan yang lebih elegan dan Cara Pythonic untuk melaksanakan operasi ini menggunakan langkah berikut:

  1. Gunakan kaedah penapis() untuk menentukan syarat.
  2. Gunakan kaedah values_list() untuk mendapatkan semula nilai lajur yang dikehendaki.

Kod berikut menunjukkan pendekatan ini:

qs = Department.objects.filter(
    departmentvolunteer__isnull=True).values_list('name', flat=True)
print(qs.query)
Salin selepas log masuk

Pertanyaan ini menjana mengikuti SQL:

SELECT "app_department"."name" 
FROM "app_department" LEFT OUTER JOIN "app_departmentvolunteer" 
ON ( "app_department"."id" = "app_departmentvolunteer"."department_id" )
WHERE "app_departmentvolunteer"."id" IS NULL
Salin selepas log masuk

yang mengembalikan nama jabatan yang tidak mempunyai sebarang sukarelawan ditugaskan.

Atas ialah kandungan terperinci Bagaimana Mencari Jabatan Dengan Cekap Tanpa Sukarelawan Menggunakan ORM Django?. 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