1

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以及它的注释。

4

1 回答 1

2

您不能将注释与带注释的值一起使用。但是,您可以使用aggregate. 请参阅文档。

您的查询将如下所示:

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。

于 2014-04-07T00:54:44.630 回答