我正在按部门计算分数的总和以及每个部门的用户数量,如下所示:
queryset = Depts.objects.annotate(total_pts=Sum('userprofiles__user__activity_user__activity_category__pts'), total_users=Count('userprofiles', distinct=True)).order_by('-total_pts')
我还想作为返回数据的一部分发送回avg_score = total_pts / total_users。有没有办法将其添加到注释中,或将它们链接在一起,或者以其他方式将其添加到返回查询集中?
编辑:
我尝试添加以下内容:
queryset = Depts.objects.annotate(total_pts=Sum('userprofiles__user__activity_user__activity_category__pts'), total_users=Count('userprofiles', distinct=True), avg_score=total_pts/total_users).order_by('-total_pts')
错误指出未定义total_pts。
谢谢。
答案 0 :(得分:0)
使用F()弄清楚了它,以前从未完全了解如何使用它:
queryset = Depts.objects.annotate(total_pts=Sum('userprofiles__user__activity_user__activity_category__pts'), total_users=Count('userprofiles', distinct=True), avg_score=F('total_pts') / F('total_users')).order_by('-avg_score')