Używam ogólnego widoku object_list
, aby szybko wyświetlić listę artykułów. Do każdego artykułu dołączono komentarze. Kwerenda używa adnotacji do Count()
liczby komentarzy, a następnie order_by()
tego przypisanego numeru.Jak filtrować/wykluczać nieaktywne komentarze z mojego adnotowanego zapytania Django?
'queryset': Article.objects.annotate(comment_count=Count('comments')).order_by('-comment_count'),
Komentarze są częścią ram django.contrib.comments
i są dołączone do modelu za pomocą Generic związku. Dodałem wyraźne odwrotne wyszukiwanie do mojego modelu artykułu:
class Article(models.Models):
...
comments = generic.GenericRelation(Comment, content_type_field='content_type', object_id_field='object_pk')
Problem polega na tym, że liczą się "nieaktywne" komentarze; te, które mają is_public=False
lub is_removed=True
. Jak mogę wykluczyć zliczanie wszelkich nieaktywnych komentarzy?
nie miałoby to artykuły filtry podstawie tego, czy mają one publicznych/usuniętych komentarzy? – Jiaaro
Wygląda na to, że zadziałało, ale zamierzam przeprowadzić pewne śledztwo, aby upewnić się, że Jim nie powiedział, że się nie dzieje. – Soviut
Jednym z efektów ubocznych, które zauważyłem, jest to, że TYLKO zwraca artykuły, które mają komentarze, a te bez są wykluczone. – Soviut