django 实现批量更新数据

发布时间 2023-10-07 14:22:57作者: vx_guanchaoguo0

原理

  • 核心科技 还是 case when 无他尔
  • 但是既然使用了 orm 既然要优雅(装逼)有一点

版本 1 一条的更新 多个语句

from myapp.models import MyModel

# 更新id=1的数据
MyModel.objects.filter(id=1).update(name='test1')

# 更新id=21的数据
MyModel.objects.filter(id=21).update(name='zhangsan')

版本 2 一条的更新 一个语句

from django.db.models import Case, When
from myapp.models import MyModel

MyModel.objects.update(
    name=Case(
        When(id=1, then='test1'),
        When(id=21, then='zhangsan'),
        default='default_value'
    )
)
版本 3 一条的更新 一个语句 循环入参
from django.db.models import Case, When
from myapp.models import MyModel

MyModel.objects.update(
    name=Case(
        When(id=1, then='test1'),
        When(id=21, then='zhangsan')
        # 没有 default 参数
    )
)