gpt4 book ai didi

python - 聚合几个模型 - Django

转载 作者:搜寻专家 更新时间:2023-10-30 20:03:20 24 4
gpt4 key购买 nike

我正在尝试计算一个字段在查询集的各个子集上的平均值。

Player.objects.order_by('-score').filter(sex='male').aggregate(Avg('level'))

这非常有效!


但是......如果我尝试为前 50 名玩家计算它,它不起作用。

Player.objects.order_by('-score').filter(sex='male')[:50].aggregate(Avg('level'))

最后一个返回的结果与上面的查询完全相同,这是错误的。


我做错了什么?

非常感谢您的帮助!

最佳答案

topfifty = Player.objects.order_by('-score')[:50]
Player.objects.filter(sex='male',pk__in=topfifty).aggregate(avglevel=Avg('level'))

编辑:我还没有测试过这个,但我想你知道我要去哪里了。

topfifty = Player.objects.order_by('-score')[:50]
ids = []
for t in topfifty:
ids += [t.id]

Player.objects.filter(sex='male',pk__in=ids).aggregate(avglevel=Avg('level'))

这有点骇人听闻,但这是我能想到的最好的。也许考虑过滤男性并取前 50 名男性,而不是取前 50 名然后过滤掉男性。

关于python - 聚合几个模型 - Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com