0

django-mpttを使用してスレッド化されたフォーラムアプリを作成しています。すべてが稼働していますが、特定のクエリセットを1つ作成するのに問題があります。

次のような投稿を取得したい:

  1. ルートノードです
  2. current_userによって投稿されている、current_userによって子孫が投稿されています。

私がこれまでに持っているのはこれです:

Post.objects.filter(Q(user = current_user) | Q(  )).exclude(parent__gt = 0)

2番目のQでは、current_userがその子孫の1つを投稿したかどうかを確認する必要があります。それが可能かどうか誰か知っていますか?

4

1 に答える 1

3

1つのクエリでこれを実行できるとは思いません。これを2つに分けて行う方法は次のとおりです。

thread_ids = Post.objects.filter(user=current_user).values_list('tree_id', flat=True)
posts = Post.objects.filter(tree_id__in=thread_ids, level=0)

これにより、ユーザーが投稿したすべてのスレッドのMPTTツリーIDが取得されます。次に、これらの各スレッドのルートノードが取得されます。

于 2009-09-11T13:09:43.523 に答える