Ich verwende die allgemeine Ansicht object_list
, um eine Reihe von Artikeln schnell aufzulisten. Jedem Artikel sind Kommentare beigefügt. Die Abfrage verwendet eine Annotation zu Count()
die Anzahl der Kommentare und dann order_by()
diese annotierte Nummer.Wie kann ich inaktive Kommentare von meiner annotierten Django-Abfrage filtern/ausschließen?
'queryset': Article.objects.annotate(comment_count=Count('comments')).order_by('-comment_count'),
Die Kommentare sind Teil des django.contrib.comments
Rahmen und über eine generische Beziehung zu dem Modell angebracht. Ich habe eine explizite umgekehrte Suche zu meinem Artikelmodell hinzugefügt:
class Article(models.Models):
...
comments = generic.GenericRelation(Comment, content_type_field='content_type', object_id_field='object_pk')
Das Problem ist, dies zählt "inaktive" Kommentare; diejenigen, die is_public=False
oder is_removed=True
haben. Wie kann ich inaktive Kommentare von der Zählung ausschließen?
würde nicht, dass Filter Artikel basierend auf, ob sie öffentlich/entfernt Kommentare? – Jiaaro
Es scheint zu funktionieren, aber ich werde einige Nachforschungen anstellen, um sicherzustellen, was Jim nicht gesagt hat. – Soviut
Eine Nebenwirkung, die ich bemerkte, ist, dass es NUR Artikel zurückgibt, die Kommentare haben, solche ohne sind ausgeschlossen. – Soviut