gpt4 book ai didi

python - Django ORM - 动态添加 When to Case

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:45 25 4
gpt4 key购买 nike

我有一个列表列表

my_list= [
[1,2,3],
[4,5,6],
...
]

我想像这样注释一些值:

from django.db.models import CharField, Case, When, Value

MyModel.objects.filter(...).annotate(label=Case(When(some_value__in=my_list[0] then=Value('first list')), output_field=CharField()))

现在我需要为 my_list 中的其他列表添加类似的 When,但 my_list 可以有不同的长度。

我该怎么做?

最佳答案

A Case expression可以包含任意数量的 When。您可以创建一个 When 表达式列表,然后将其解压到一个 Case 中:

whens = [When(some_value__in=l, then=Value('list #{}'.format(i)))\
for i, l in enumerate(my_list)]

MyModel.objects.filter(...).annotate(label=Case(*whens, output_field=CharField()))

关于python - Django ORM - 动态添加 When to Case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32769465/

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