我想计算structure
字段中特定值的总数。
Fund.objects.all().exclude(structure__isnull=True).extra(select={'Structure': 'structure'}).values('Structure').annotate(total=Count('structure')).order_by('-total')
但在此之前,我想应用distinct()
函数,以便只有具有不同id
的对象才会用于查询。所以我尝试过这样的事情:
object_list = Fund.objects.all().distinct('id')
object_list.exclude(structure__isnull=True).extra(select={'Structure': 'structure'}).values('Structure').annotate(total=Count('structure'))
但我收到错误:
NotImplementedError: annotate() + distinct(fields) is not implemented.
我怎样才能做到这一点?
在Psql中:
CREATE VIEW distinct_funds as select distinct id, structure from Fund;
SELECT count(structure), structure from distinct_funds GROUP BY structure;