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
Lepaskan: 2024-12-29 09:30:11
asal
583 orang telah melayarinya

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

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

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

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!

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