2

我从 Django 开始,我有一个我认为很简单的问题。如何使用 QuerySet 获取下一个查询的结果?

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()

但在我看来,它们都非常复杂。有没有一种简单的方法可以做到这一点?

非常感谢。

4

2 回答 2

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

p.choice_set.all()
于 2013-09-03T14:13:05.397 回答
0

从 Django 1.4 开始,您可以使用prefetch_related文档):

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()

Django 总共会进行 2 个查询:一个用于投票,一个用于选择。

于 2013-09-03T16:58:48.987 回答