Rumah > pangkalan data > tutorial mysql > Bagaimana Mencari Jabatan Tanpa Sukarelawan Menggunakan Django's ORM LEFT JOIN?

Bagaimana Mencari Jabatan Tanpa Sukarelawan Menggunakan Django's ORM LEFT JOIN?

DDD
Lepaskan: 2024-12-31 03:42:17
asal
139 orang telah melayarinya

How to Find Departments with No Volunteers Using Django's ORM LEFT JOIN?

KIRI SERTAI Django ORM

Mencari Jabatan Tanpa Sukarelawan Menggunakan ORM

Dalam Rangka kerja Django Object-Relational Mapping (ORM), anda boleh menggunakan operasi LEFT JOIN untuk dapatkan semula data daripada berbilang jadual, walaupun jika tiada baris yang sepadan dalam salah satu jadual.

Untuk membuat pertanyaan untuk jabatan yang tiada sukarelawan ditugaskan kepadanya, anda boleh menggunakan pendekatan berikut:

from django.db.models import OuterRef, Subquery

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

Penjelasan:

  • Kelas OuterRef mewakili kunci utama contoh model semasa. Dalam kes ini, OuterRef('pk') merujuk kepada kunci utama model Jabatan.
  • Kelas Subquery digunakan untuk mencipta subkueri yang mewakili jadual sukarelawan jabatan. Penapis isnull menyemak sama ada jadual sukarelawan jabatan mempunyai baris yang sepadan untuk setiap jabatan.
  • Kaedah penapis digunakan untuk menapis keluar jabatan yang mempunyai baris yang sepadan dalam jadual sukarelawan jabatan. Kaedah values_list kemudiannya digunakan untuk mendapatkan hanya medan nama jabatan yang sepadan.

Pendekatan ini membolehkan anda menjangkau perhubungan berbilang nilai antara model dan mendapatkan data walaupun tiada padanan dalam salah satu daripada meja.

Atas ialah kandungan terperinci Bagaimana Mencari Jabatan Tanpa Sukarelawan Menggunakan Django's ORM LEFT JOIN?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan