我从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()
但他们两个在我看来都非常复杂。是否有一种简单的方法可以做到这一点?
非常感谢。
答案 0 :(得分:0)
p = Poll.objects.get(pk=poll_id)
p.choice_set.all()
答案 1 :(得分:0)
从Django 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()
Django将总共进行2次查询:一次用于民意调查,一次用于选择。