Django ORM의 LEFT JOIN
왼쪽 조인 작업은 일반적으로 행을 일치하는 열과 결합하여 여러 테이블에서 데이터를 검색하는 데 사용됩니다. Django에서는 filter() 및 value_list() 메서드를 사용하여 이를 달성할 수 있습니다.
다음 시나리오를 고려해보세요. Volunteer, Department 및 DepartmentVolunteer의 세 가지 모델이 있습니다. 자원봉사자는 여러 부서에 속할 수 있고, 부서에는 여러 자원봉사자가 있을 수 있습니다. 자원 봉사자가 할당되지 않은 모든 부서를 검색하려고 합니다.
이를 달성하는 한 가지 방법은 원시 SQL 쿼리를 사용하는 것입니다.
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;
그러나 Django는 더 우아하고 다음 단계를 사용하여 이 작업을 수행하는 Python 방식:
다음 코드는 이 접근 방식을 보여줍니다.
qs = Department.objects.filter( departmentvolunteer__isnull=True).values_list('name', flat=True) print(qs.query)
이 쿼리는 다음 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
자원봉사자가 없는 부서의 이름을 반환합니다. 할당되었습니다.
위 내용은 Django의 ORM을 사용하여 자원봉사자가 없는 부서를 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!