¿Cómo construyo un queryset en django recuperando hilos en los que un usuario ha publicado?
-
05-07-2019 - |
Pregunta
Estoy creando una aplicación de foro con hilos usando django-mptt. Todo está en funcionamiento, pero tengo problemas para crear un queryset específico.
Quiero recuperar publicaciones que:
1) son nodos raíz
2) son publicados por current_user o tienen un descendiente publicado por current_user.
Lo que tengo hasta ahora es esto:
Post.objects.filter(Q(user = current_user) | Q( )).exclude(parent__gt = 0)
en mi segunda Q necesito algo que decir si current_user ha publicado uno de sus descendientes. Alguien sabe si es posible?
Solución
No creo que puedas hacer esto en una consulta. Aquí está cómo hacerlo en dos:
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)
Esto obtiene el ID de árbol de MPTT de cada subproceso que el usuario ha publicado. Luego obtiene el nodo raíz de cada uno de estos subprocesos.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow