1

Story と FollowUp の 2 つのモデルがあります。FollowUp は Story の外部キーを持つことができます。Story には User の外部キーがあります。

user.story_set.all() を使用して、ユーザーに関連付けられているすべてのストーリーを取得できます。クエリセットを反復せずに、すべてのストーリーに関連付けられたすべてのフォローアップを取得できるようにしたいと考えています。

最初に user.story_set.all().followup_set.all() を試しましたが、うまくいきません。

どうすればこれを達成できますか?

4

2 に答える 2

1

簡単な方法はprefetch_related、すべてのオブジェクトを事前にロードしてから反復することです。

followups = []
for story in user.story_set.all().prefetch_related():
    followups.extend(story.followup_set.all())

または、次のようにすることもできます。

followups = Followup.objects.filter(story__in = user.story_set.all())

(コードの 2 番目の部分では、オブジェクトではなく ID を使用するためにリストの圧縮が必要になる場合がありますが、その考えは理解できます)

于 2013-08-27T20:54:21.830 に答える
0

より簡潔なアプローチは次のとおりです。

FollowUp.objects.filter(story__user=user)
于 2013-08-27T21:32:32.867 に答える