5

मैं लेखों के एक सेट को तुरंत सूचीबद्ध करने के लिए object_list सामान्य दृश्य का उपयोग कर रहा हूं। प्रत्येक आलेख में टिप्पणियां संलग्न हैं। क्वेरी Count() टिप्पणियों की संख्या और फिर order_by() पर एनोटेशन संख्या का एनोटेशन का उपयोग करती है।मेरी एनोटेटेड Django क्वेरी से निष्क्रिय टिप्पणियों को फ़िल्टर/बहिष्कृत कैसे करें?

'queryset': Article.objects.annotate(comment_count=Count('comments')).order_by('-comment_count'), 

टिप्पणी django.contrib.comments ढांचे का हिस्सा हैं और एक सामान्य रिश्ता के माध्यम से मॉडल से जुड़े होते हैं। मैंने अपने अनुच्छेद मॉडल में एक स्पष्ट रिवर्स लुकअप जोड़ा है:

class Article(models.Models): 
    ... 
    comments = generic.GenericRelation(Comment, content_type_field='content_type', object_id_field='object_pk') 

समस्या यह है कि यह "निष्क्रिय" टिप्पणियों की गणना करता है; जिनके पास is_public=False या is_removed=True है। गिनती से किसी भी निष्क्रिय टिप्पणी को मैं कैसे बाहर कर सकता हूं?

उत्तर

2

documentation for aggregations बताता है कि यह कैसे करें। क्या आप वाकई यह के बाद annotate खंड डाल कर रही एक filter खंड का उपयोग करने की जरूरत है,:

Article.objects.annotate(comment_count=Count('comments')).filter(
    comment__is_public=True, comment__is_removed=False 
).order_by('-comment_count') 
+0

नहीं होगा कि फिल्टर या नहीं, वे सार्वजनिक/हटाया टिप्पणी के आधार पर लेख? – Jiaaro

+0

ऐसा लगता है कि काम किया है लेकिन मैं यह सुनिश्चित करने के लिए कुछ जांच करने जा रहा हूं कि जिम क्या नहीं हो रहा है। – Soviut

+0

एक साइड इफेक्ट मैंने नोटिस किया है कि यह केवल उन लेखों को लौटाता है जिनमें टिप्पणियां हैं, जिन्हें बिना बाहर रखा गया है। – Soviut

संबंधित मुद्दे