django 计数注解字段
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
次遭遇。为此,我尝试了以下方法:
sprime_in_e = e_in_s.values('revcount').annotate(countprime=Count('revcount'))
但是我遇到了一个错误:“无法计算 Count('revcount'): 'revcount' 是一个聚合”。有什么建议吗?
注意:我需要 e_in_s
产生的值以及它的注释。
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 语句。