Django管理员多次运行查询

时间:2015-08-25 21:36:13

标签: python django django-queryset django-debug-toolbar

我在django admin的list_items中定义了一个函数,如下所示:

def won(self):
    result = (Result.objects.filter(user=self)
              .select_related('user')
              .aggregate(Sum('prize'))['prize__sum'])
    return result if result else 0

结果包含用户的外键以及“奖品”,用于定义用户获得的积分数。

使用Django调试工具栏,我发现列出的每个用户都会生成40个相同的查询,以计算“赢得”#39;每个用户的价值。

SELECT SUM("games_result"."prize") AS "prize__sum" FROM "games_result" WHERE "games_result"."user_id" = 28297
Duplicated 40 times. 

我做了一件非常明显错误的事情导致这个问题吗?有没有更好的方法来获取带有该用户链接的Result对象?

0 个答案:

没有答案