두 개의 모델 User (django.contrib.auth.models.User)와 Log라는 모델이 있습니다. 둘 다 "전자 메일"필드를 포함합니다. 로그에 User 모델을 가리키는 ForeignKey가 없습니다. 전자 메일 필드를 공용으로 사용하여이 두 테이블에서 JOIN을 수행하는 방법을 파악하려고합니다.관련없는 Django 모델에서 SQL JOIN을 수행 하시겠습니까?
기본적으로 수행 할 수있는 2 개의 쿼리가 있습니다. 필터링을위한 기본 조인
#Get all the User objects that have related Log objects with the level parameter set to 3.
User.objects.filter(log__level=3)
또한 일부 집계를 수행하고 싶습니다.
물론 역순으로 수행 할 수도 있습니다.
log = Log.objects.get(pk=3)
log.user...
ORM으로이를 수행 할 수있는 방법이 있습니까? 관계의 "활성화"를 위해 모델의 메타 클래스에 추가 할 수있는 무언가가 있을까요?
감사합니다.
이것은 Annotate와 결합하여 두 가지 유스 케이스를 모두 다루어야한다고 생각합니다. –
DuckPunching 전용 +1 – Wogan
"레벨 매개 변수가 3으로 설정된 관련 Log 객체가있는 모든 User 객체를 가져 오려면"모든 사용자에 대해 logs 함수를 호출해야합니다. 많은 쿼리처럼 보입니다. Extra는 하나의 쿼리에서이를 수행 할 수 있습니다. – sunprophit