gpt4 book ai didi

django - 在 for 循环 django 中构建 When Case 查询

转载 作者:行者123 更新时间:2023-12-02 00:22:07 26 4
gpt4 key购买 nike

我尝试构建queryset 以使用When Case 更新数据。它只能在一个带有动态参数的 for 循环之后构建。

示例我有模型Employee:

class Employee(models.Model):
account_type = models.TextField(blank=True, null=True)

我想像这样更新它,如果 id = 1 那么 value = 1,如果 value = 2 那么 value = 2

Employee.objects.update(
account_type=Case(
When(id=1,
then=Value("1")),
When(id=2,
then=Value("2")),
),
)

但我希望 id 是动态的,所以我无法构建静态查询集。我想在一个 for 循环 中构建 Case。我的理想是这样的:

final_case = None
for one_id in list_id:
final_case += Case(When(id=one_id, then=Value(one_id)))

我想构建 final_case 并且只更新

Employee.objects.update(account_type=final_case)

有人知道怎么做吗?谢谢

最佳答案

您应该只创建 When 循环并将它们放在单个 Case 中。

whens = [When(id=id, then=Value(str(id))) for id in ids] # make a list

Employee.objects.update(
account_type=Case(
*whens # unpack the list
),
)

关于django - 在 for 循环 django 中构建 When Case 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55000809/

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