【发布时间】:2019-07-26 19:15:34
【问题描述】:
我尝试构建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 loop 中构建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)
有人知道怎么做吗?谢谢
【问题讨论】:
标签: django django-rest-framework django-queryset