2013-09-03 2 views
2

나는 장고로 시작하고 있으며 나는 간단한 질문이라고 생각한다. QuerySet으로 다음 쿼리의 결과를 얻으려면 어떻게해야합니까?django와 간단한 내부 조인

select * 
from poll p, 
    choice c 
where p.id = c.poll_id 

나는 두 가지 방법 발견했습니다 :

Poll.objects.filter(id__in = Choice.objects.values_list('poll_id')) 

Poll.objects.filter(choice__id__isnull = False).distinct() 

하지만 둘 다 매우 복잡 나에게 것입니다. 그것을 할 수있는 간단한 방법이 있습니까?

고마워요.

+0

실제로, 두 번째 옵션은'Poll.objects.filter (choice__isnull = False) .distinct()'에 대한 것입니다. – karthikr

+0

고마워요, 훨씬 더 예쁘다고 생각합니다. – ellgon

답변

0
p = Poll.objects.get(pk=poll_id) 

p.choice_set.all() 
+0

이 코드는 나에게 모든 선택을 제공합니다. 설문 조사, 선택과 함께 모든 투표. 어쨌든 고마워 :) – ellgon

0

에 장고 1.4에서, 당신은 prefetch_related (docs)를 사용할 수 있습니다 : 여론 조사에 대한 하나의 선택을위한 하나

all_polls = Poll.objects.all().prefetch_related('choice_set') 
for poll in all_polls: 
    # This will list all choices of this poll 
    choices = poll.choice_set.all() 

장고 2 개 쿼리의 총을 만들 것입니다.