Estoy usando la vista genérica object_list
para enumerar rápidamente un conjunto de artículos. Cada artículo tiene comentarios adjuntos. La consulta utiliza una anotación a Count()
la cantidad de comentarios y luego order_by()
ese número anotado.¿Cómo se filtra/excluye los comentarios inactivos de mi consulta anotada Django?
'queryset': Article.objects.annotate(comment_count=Count('comments')).order_by('-comment_count'),
Los comentarios son parte del marco django.contrib.comments
y se adjuntan al modelo a través de una relación genérica. He agregado una búsqueda inversa explícita a mi modelo de artículo:
class Article(models.Models):
...
comments = generic.GenericRelation(Comment, content_type_field='content_type', object_id_field='object_pk')
El problema es que esto cuenta los comentarios "inactivos"; los que tienen is_public=False
o is_removed=True
. ¿Cómo puedo excluir cualquier comentario inactivo de ser contado?
no querían que filtrar artículos en función de si tienen o no los comentarios públicos/retirados? – Jiaaro
Parece que funcionó, pero voy a investigar un poco para asegurarme de que lo que dijo Jim no esté sucediendo. – Soviut
Un efecto secundario que noté es que SOLAMENTE devuelve artículos que tienen comentarios, los que no están excluidos. – Soviut