Come faccio a creare un queryset in django recuperando i thread in cui un utente ha pubblicato?
-
05-07-2019 - |
Domanda
Sto realizzando un'app di thread del forum usando django-mptt. Tutto è attivo e funzionante, ma ho difficoltà a creare un queryset specifico.
Voglio recuperare post che:
1) sono nodi radice
2) sono pubblicati da current_user o hanno un discendente pubblicato da current_user.
Quello che ho finora è questo:
Post.objects.filter(Q(user = current_user) | Q( )).exclude(parent__gt = 0)
nel mio secondo Q ho bisogno di qualcosa da dire se current_user ha pubblicato uno dei suoi discendenti. Qualcuno sa se è persino possibile?
Soluzione
Non credo che tu possa farlo in una sola query. Ecco come farlo in due:
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)
Questo ottiene l'id dell'albero MPTT di ogni thread in cui l'utente ha postato. Quindi ottiene il nodo radice di ciascuno di questi thread.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow