这就是我希望 Django 在 SQL 中生成的内容:
select avg(subquery.countval) from (
select count(something) countval,user_id from foo group by user_id
) subquery
根据 Annotated 聚合文档,我认为这应该如何与 Django 一起使用:
Foo.objects.all().values('user_id').\
annotate(countval=Count('id')).\
aggregate(Avg('countval'))
问题是 Django 4.x 没有生成正确的查询。你会得到类似的东西:
SELECT FROM (SELECT foo.user_id as user_id,COUNT(foo.id)
AS countval from foo
group by foo.user_id)
有任何想法吗?我通过源代码进行了调试,但问题所在并不明显。