微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

分组后最多可添加一个注释

如何解决分组后最多可添加一个注释

您是否尝试过将Case表情直接放入其中Max从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))

解决方法

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

a_priority是基于大小写/将字符串映射到优先级值时的注释。

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版本在python 3上是1.10。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。