Django에서 사용자가 게시 한 스레드를 검색하는 쿼리 세트를 어떻게 구축합니까?
-
05-07-2019 - |
문제
Django-MPTT를 사용하여 스레드 포럼 앱을 만들고 있습니다. 모든 것이 시작되고 실행되지만 하나의 특정 쿼리 세트를 구축하는 데 어려움이 있습니다.
다음을 검색하고 싶습니다.
1) 루트 노드입니다
2) current_user가 게시합니다 또는 current_user가 후손을 게시하십시오.
내가 지금까지 가지고있는 것은 다음과 같습니다.
Post.objects.filter(Q(user = current_user) | Q( )).exclude(parent__gt = 0)
두 번째 Qi에서는 Wether current_user가 후손 중 하나를 게시했다고 말할 것이 필요합니다. 가능한지 아는 사람이 있습니까?
해결책
나는 당신이 한 쿼리로 이것을 할 수 있다고 생각하지 않습니다. 다음은 다음과 같은 방법입니다.
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를 얻습니다. 그런 다음 각 스레드의 루트 노드를 얻습니다.
제휴하지 않습니다 StackOverflow