2

私は Django から始めていますが、簡単な質問だと思います。QuerySet で次のクエリの結果を取得するにはどうすればよいですか?

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

私は2つのアプローチを見つけました:

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( 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 つのクエリを作成します。1 つは投票用で、もう 1 つは選択肢用です。

于 2013-09-03T16:58:48.987 に答える