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
生成的值及其注释。
答案 0 :(得分:2)
您不能使用带注释值的注释。但是,您可以使用aggregate
。 See 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。