如何在Django中注释多个值

时间:2014-07-19 06:25:39

标签: python sql django django-models annotations

我想扩展现有的查询集。

我尝试了以下内容:

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

它适用于一个注释。但是我该如何添加更多?

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

随着上述解决方案的结果变得疯狂。什么时候应该显示:

  • 2
  • 2评论

它显示:

  • 4
  • 4评论

1 个答案:

答案 0 :(得分:2)

你应该使用这个

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