【发布时间】:2018-09-26 21:09:02
【问题描述】:
我有一组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 包括在内,但问题显然在于第二个注释无法识别第一个生成的字段。
提前致谢。
【问题讨论】:
标签: django django-models django-queryset