【问题标题】:How to annotate more than one value in Django如何在 Django 中注释多个值
【发布时间】:2014-07-19 06:25:38
【问题描述】:

我想扩展现有的查询集。

我尝试了以下方法:

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文章
  • 2cmets

它显示:

  • 4文章
  • 4cmets

【问题讨论】:

    标签: python sql django django-models annotations


    【解决方案1】:

    你应该使用这个

    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
    

    【讨论】:

      猜你喜欢
      • 2014-11-13
      • 2011-11-10
      • 2011-10-11
      • 2015-09-03
      • 2021-11-03
      • 2017-11-11
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多