我有一组inspectors
,每个都有他们从事的许多项目,并根据他们的pay_rate
获得报酬。 我的目标是根据inspectors
工作的公司来汇总他们的平均工资率。 如果检查员从事多项工作,我想使用他的平均pay_rate
。
以下代码应该执行此操作,但事实并非如此。
i = InspectorProject.objects.all()
uniques = i.order_by('inspector',
'project__prime_consultant__name').values('inspector',
'project__prime_consultant__name')
.annotate(pay_rate=Avg('pay_rate'), bill_rate=Avg('bill_rate'))
# the above code works as expected. here's where it gets fishy.
companies = uniques.order_by(.order_by('project__prime_consultant__name')
.values('project__prime_consultant__name')
.annotate(avg_pay=Avg('pay_rate'), avg_bill=Avg('bill_rate'))
那里的最后一行给了我一个关于注释的keyError: 'pay_rate'
。 这对我来说意味着第二个注释无法识别第一个注释创建的属性/列/字段。
1(为什么?
2(我该如何解决这个问题?
我包括bill_rate
是彻底的,但问题显然在于第二个注释无法识别第一个注释的生成字段。
提前谢谢。
你得到这个是因为你的values
电话。之后,任何进一步的操作将仅包含您在values
中指定的字段。将其移动到批注之后,或将pay_rate
和bill_rate
添加到values
调用中。