2009-09-11 13 views
0

Je suis en train de créer une application de forum avec un thread utilisant django-mptt. Tout est opérationnel, mais j'ai du mal à créer un ensemble de requêtes spécifique.Comment créer un jeu de requête dans des threads de récupération django dans lesquels un utilisateur a posté?

Je veux récupérer les messages qui:

1) sont des nœuds racine

2) sont affichés par current_user ou ont un descendant posté par current_user.

Ce que j'ai à ce jour est la suivante:

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

dans mon deuxième Q je dois dire quelque chose à wether current_user a mis en ligne un de ses descendants. Quelqu'un sait-il si c'est même possible?

Répondre

2

Je ne pense pas que vous pouvez le faire en une seule requête. Voilà comment le faire en deux.

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) 

Cela devient l'ID d'arbre MPTT de chaque fil que l'utilisateur a écrit dans Ensuite, il obtient le nœud racine de chacun de ces fils.