我尝试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)
有人知道怎么做吗?谢谢