Django Annotate - 我可以将在 annotate 中创建的字段用于在 annotate 中创建的另一个字段吗?
Django Annotate - Can I used the fields created in annotate for another field created in annotate?
我在注释中按部门计算分数总和以及每个部门的用户数:
queryset = Depts.objects.annotate(total_pts=Sum('userprofiles__user__activity_user__activity_category__pts'), total_users=Count('userprofiles', distinct=True)).order_by('-total_pts')
我还想作为 return 数据的一部分发回 avg_score = total_pts / total_users。有没有办法将其添加到注释中,或将它们链接在一起,或者以其他方式将其添加到 return 查询集中?
编辑:
我尝试添加如下内容:
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 未定义。
谢谢。
用 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')
我在注释中按部门计算分数总和以及每个部门的用户数:
queryset = Depts.objects.annotate(total_pts=Sum('userprofiles__user__activity_user__activity_category__pts'), total_users=Count('userprofiles', distinct=True)).order_by('-total_pts')
我还想作为 return 数据的一部分发回 avg_score = total_pts / total_users。有没有办法将其添加到注释中,或将它们链接在一起,或者以其他方式将其添加到 return 查询集中?
编辑:
我尝试添加如下内容:
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 未定义。
谢谢。
用 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')