Как создать набор запросов в django, извлекая потоки, которые опубликовал пользователь? - PullRequest
0 голосов
/ 11 сентября 2009

Я создаю потоковое приложение для форума, используя django-mptt. Все работает, но у меня проблемы с созданием одного конкретного набора запросов.

Я хочу получить сообщения, которые:

1) являются корневыми узлами

2) опубликовано current_user или имеет потомка, опубликованного current_user.

То, что я имею до сих пор, таково:

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

во втором вопросе мне нужно кое-что сказать, опубликовал ли current_user один из его потомков. Кто-нибудь знает, возможно ли это вообще?

1 Ответ

2 голосов
/ 11 сентября 2009

Я не думаю, что вы можете сделать это в одном запросе. Вот как это сделать в два раза:

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 каждого потока, в котором размещен пользователь. Затем он получает корневой узел каждого из этих потоков.

...