简体   繁体   English

如何在Django中注释多个值

[英]How to annotate more than one value in Django

I want to expand existing queryset. 我想扩展现有的查询集。

I tried the following: 我尝试了以下方法:

def queryset(self, request):
    qs = super(MyAdmin, self).queryset(request)
    qs = qs.annotate(models.Count('article'))
    return qs

It works perfectly for one annotation. 它非常适合一个注释。 But how can I add more? 但是如何添加更多?

def queryset(self, request):
    qs = super(MyAdmin, self).queryset(request)
    qs = qs.annotate(models.Count('article'))
    qs = qs.annotate(models.Count('comment'))
    return qs

With above solution results go crazy. 通过上述解决方案,结果变得疯狂。 When it should show: 什么时候应该显示:

  • 2 articles 2
  • 2 comments 2评论

it shows: 表明:

  • 4 articles 4
  • 4 comments 4评论

you should use this 你应该用这个

Count('article', distinct=True)

def queryset(self, request):
    qs = super(MyAdmin, self).queryset(request)
    qs = qs.annotate(models.Count('article', distinct=True))
    qs = qs.annotate(models.Count('comments', distinct=True))
    return qs

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM