Rumah >pangkalan data >tutorial mysql >Bagaimana Mencari Jabatan yang Tidak Ditugaskan di Django Menggunakan LEFT JOIN?

Bagaimana Mencari Jabatan yang Tidak Ditugaskan di Django Menggunakan LEFT JOIN?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-29 09:30:11586semak imbas

How to Find Unassigned Departments in Django Using LEFT JOIN?

Menemui Jabatan Tidak Ditugaskan dengan Django ORM: LEFT JOIN

Dalam Django, anda boleh melaksanakan operasi LEFT JOIN secara elegan untuk mendapatkan data tertentu. Mari kita terokai cara menggunakan teknik ini untuk mengenal pasti jabatan tanpa sukarelawan yang ditugaskan.

KIRI SERTAI dengan Django ORM

Memandangkan model berikut:

class Volunteer(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)    
    email = models.CharField(max_length=50)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)


class Department(models.Model):
    name = models.CharField(max_length=50, unique=True)
    overseer = models.ForeignKey(Volunteer, blank=True, null=True)
    location = models.CharField(max_length=100, null=True)


class DepartmentVolunteer(models.Model):
    volunteer = models.ForeignKey(Volunteer)
    department = models.ForeignKey(Department)
    assistant = models.BooleanField(default=False)
    keyman = models.BooleanField(default=False)
    captain = models.BooleanField(default=False)
    location = models.CharField(max_length=100, blank=True, null=True)

Kita boleh memanfaatkan Django ORM's LEFT JOIN untuk mendapatkan jabatan yang tidak berkaitan sukarelawan:

qs = Department.objects.filter(departmentvolunteer__isnull=True).values_list('name', flat=True)

Meneroka Pertanyaan

Pertanyaan yang dijana ialah:

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

Pertanyaan ini mendapatkan semula nama jabatan yang tidak terdapat sebarang entri dalam jadual Sukarelawan Jabatan .

Menjangkau Berbilang Nilai Perhubungan

Django ORM menyediakan sokongan untuk "Menjangkau Perhubungan Berbilang Nilai" melalui penapisan, yang membolehkan pelintasan perhubungan kompleks yang cekap.

Dokumentasi mengenai topik ini boleh didapati di sini: https://docs.djangoproject.com/en/stable/topics/db/queries/#spanning-multi-valued-relationships

Atas ialah kandungan terperinci Bagaimana Mencari Jabatan yang Tidak Ditugaskan di Django Menggunakan LEFT JOIN?. 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