django 实现批量更新数据
原理
- 核心科技 还是 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
when_list = [When(uuid=sort.get('uuid'), then=int(sort.get('sort'))) for sort in sorts]
filter_list = [sort.get('uuid') for sort in sorts]
MyModel.objects.filter(uuid__in=filter_list).update(
sort=Case(*when_list)
)
本文来自博客园,作者:vx_guanchaoguo0,转载请注明原文链接:https://www.cnblogs.com/guanchaoguo/p/17746200.html