2009-08-18 3 views
0

모델이있는 경우 아래와 같이 :장고 ORM 쿼리

주어진 사용자가 연관된 모든 프로젝트의 목록을 찾을 수있는 간단한 장고 ORM 쿼리는 무엇
class Donation(models.Model): 
    user = FKey(User) 
    project = FKey(Project) 
    ... 

class Campaign(models.Model): 
    user = Fkey(User) 
    project = FKey(Project) 
    ... 

class Project(models.Model) 
     ... 

.

하나의 직접적인 해결책은 두 모델에서 프로젝트의 모든 ID를 가져 와서 주어진 ID에 대한 Projects 모델을 쿼리하는 것입니다.

그러나 더 나은 해결책이 있어야합니다.

Project.objects.filter(id = Campaign.objects.filter(user = searchedUser)) 
Project.objects.filter(id = Donation.objects.filter(user = searchedUser)) 

을 지금 u는 당신의 페이지 캠페인에 이혼 수와 기부 어떤 사용자에 있으므로이 부분이 있습니다

답변

2

이 작업을 수행하는 가장 간단한 직접 ORM 쿼리가 될 수있다

from django.db.models import Q 

Project.objects.filter(
Q(id__in=Campaign.objects.filter(user=SomeUser).values('project')) | 
Q(id__in=Donation.objects.filter(user=SomeUser).values('project')) 
) 
0

나는 우리가 우리가 2 단계에서 할 필요가 Campaign 검색어 세트와 Donation을 병합 할 수 있다고 생각 , 장점은 :