gpt4 book ai didi

python - 分组依据后的注释最大值

转载 作者:太空狗 更新时间:2023-10-29 21:45:27 25 4
gpt4 key购买 nike

我想为每组 (b, c) 对计算 a_priority 的最大值。

a_priority 是一个基于 case/when 将字符串映射到优先级值的注解。

from django.db.models import Max, Case, When, IntegerField
qs = MyObject.objects.all()
qs = qs.annotate(
a_priority=Case(
When(a='A', then=1),
When(a='S', then=2),
When(a='Q', then=3),
output_field=IntegerField()
)
)
qs = qs.values("b", "c").annotate(Max("a_priority"))

我收到以下错误:

KeyError: 'a_priority'

我相信 qs.values("b", "c") 会过滤掉我的注释 a_priority。行为与任何实际字段不同,提供字段的最大值。

我的 django 版本是 1.10 on python 3。

最佳答案

您是否尝试过将 Case 表达式直接放入 Max 中?有可能since Django 1.8 .

from django.db.models import Max, Case, When, IntegerField
qs = MyObject.objects.all()
a_priority=Case(
When(a='A', then=1),
When(a='S', then=2),
When(a='Q', then=3),
output_field=IntegerField()
)
qs = qs.values("b", "c").annotate(max_a_priority=Max(a_priority))

关于python - 分组依据后的注释最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40318163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com