在循环django中进行案例查询时生成

在循环django中进行案例查询时生成,django,django-rest-framework,django-queryset,Django,Django Rest Framework,Django Queryset,我尝试使用When Case构建查询集以更新数据。它只能在一个for循环之后使用动态参数进行构建 例如,我有一名模范员工: 我想这样更新它,如果id=1,那么value=1,如果value=2,那么value=2 Employee.objects.update( account_type=Case( When(id=1, then=Value("1")), When(id=2, then=Valu

我尝试使用When Case构建查询集以更新数据。它只能在一个for循环之后使用动态参数进行构建

例如,我有一名模范员工:

我想这样更新它,如果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是动态的,所以我不能构建静态queryset。我希望在一个for循环中构建案例。 我的理想是这样的:

final_case = None
for one_id in list_id:
   final_case += Case(When(id=one_id, then=Value(one_id)))
我想建立最终的案例和更新只喜欢

Employee.objects.update(account_type=final_case)

有人知道怎么做吗?谢谢

您应该只创建when in循环,并将它们放在单个案例中


您应该只创建when in循环,并将它们放在单个案例中


这是唯一的例子。我的目的是如何用答案在for循环中构建Case。先生,你是圣人!:这是唯一的例子。我的目的是如何用答案在for循环中构建Case。先生,你是圣人!:
Employee.objects.update(account_type=final_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
    ),
)