如何在Django中通过条件CASE实现字段的设置与追加?
Django中实现指定UPDATE语句的正确写法
你需要使用Django ORM提供的Concat函数来实现SQL中的CONCAT功能,同时结合F()对象引用数据库字段的值,避免直接使用Python变量。修正后的代码如下:
from django.db.models import Case, When, F, Concat, Value Table.objects.filter(someid__in=[id1, id2, id3]).update( column=Case( When(column="", then=Value("100")), default=Concat(F("column"), Value("100")) ) )
关键说明:
- 导入
Concat用于拼接字段值和字符串常量,Value用于包装字符串字面量(确保Django将其识别为SQL中的字符串值,而不是字段名) - 使用
F("column")引用数据库中column字段的当前值,这样拼接操作会在数据库层面执行,而非Python代码中 Case的default分支对应SQL中ELSE的逻辑,用Concat(F("column"), Value("100"))实现CONCAT(column, '100')的效果
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

