我有一组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
包括在内,但问题很明显是第二个注释无法识别第一个注释的生成字段。
谢谢。
答案 0 :(得分:0)
您正在通过values
通话获得此信息。之后,任何进一步的操作将只包含您在values
中指定的字段。将其移到注释后,或将pay_rate
和bill_rate
添加到values
调用中。