【问题标题】:Django 2.0 Annotate an Annotation QuerysetDjango 2.0 注释一个注释查询集
【发布时间】: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


    【解决方案1】:

    由于您的 values 呼叫,您收到此消息。之后,任何进一步的操作将只包含您在values 中指定的字段。将其移至注释之后或将 pay_ratebill_rate 添加到 values 调用中。

    【讨论】:

      猜你喜欢
      • 2017-07-09
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 2011-04-08
      • 2019-12-30
      • 2019-03-20
      相关资源
      最近更新 更多