小编Ngo*_*ham的帖子

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

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

我有模型的例子Employee

class Employee(models.Model):
    account_type = models.TextField(blank=True,  null=True)
Run Code Online (Sandbox Code Playgroud)

我想像这样更新它,如果 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")),
     ),
 )
Run Code Online (Sandbox Code Playgroud)

但我想要的id是动态的,所以我不能构建静态查询集。我想构建Case一个for loop。我的理想是这样的:

final_case = None
for one_id in list_id:
   final_case += Case(When(id=one_id, then=Value(one_id)))
Run Code Online (Sandbox Code Playgroud)

我只想构建final_case和更新

Employee.objects.update(account_type=final_case)
Run Code Online (Sandbox Code Playgroud)

有人知道怎么做吗?谢谢

django django-queryset django-rest-framework

1
推荐指数
1
解决办法
228
查看次数