Django 2.0 注释注释查询集



我有一组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_ratebill_rate添加到values调用中。

最新更新