Come faccio a creare un queryset in django recuperando i thread in cui un utente ha pubblicato?

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

  •  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?

È stato utile?

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
scroll top