【问题标题】:django count annotation fielddjango count 注释字段
【发布时间】:2014-05-18 21:51:04
【问题描述】:

Django 1.3、Python 2.7

我有以下模型(省略了一些不相关的字段):

class Encounter(models.Model):
  subject = models.ForeignKey('Subject', to_field='uuid')
  uuid = models.SlugField(max_length=36, unique=True, default=make_uuid, editable=False)

class Subject(models.Model):
  uuid = models.SlugField(max_length=36, unique=True, default=make_uuid, editable=False)

我使用以下代码计算了每个主题的遭遇次数:

e_in_s = Subject.objects.annotate(revcount = Count('encounter')).order_by('-revcount')

现在我想知道对于revcount 的每个值,有多少主题恰好遇到了revcount。我尝试了以下方法:

sprime_in_e = e_in_s.values('revcount').annotate(countprime=Count('revcount'))

但收到错误“无法计算计数('revcount'):'revcount' 是一个聚合”。有什么建议吗?

注意:我需要e_in_s 产生的值及其注解。

【问题讨论】:

    标签: python django django-1.3 django-aggregation


    【解决方案1】:

    您不能将注释与带注释的值一起使用。但是,您可以使用aggregateSee the docs.

    您的查询将如下所示:

    e_in_s = Subject.objects.annotate(revcount = Count('encounter')).order_by('-revcount')
    sprime_in_e = e_in_s.values('revcount').aggregate(countprime=Count('revcount'))
    

    如果这还不够,您需要使用 extra 功能或下拉到原始 SQL。

    【讨论】:

      猜你喜欢
      • 2011-10-11
      • 1970-01-01
      • 2020-11-03
      • 2019-07-21
      • 2019-10-27
      • 1970-01-01
      • 2020-09-03
      • 2019-01-22
      • 2019-09-03
      相关资源
      最近更新 更多