Django에서 사용자가 게시 한 스레드를 검색하는 쿼리 세트를 어떻게 구축합니까?

StackOverflow https://stackoverflow.com/questions/1409800

  •  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를 얻습니다. 그런 다음 각 스레드의 루트 노드를 얻습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top