如何使用Django批量更新?
我想用Django更新表格-原始SQL中的内容如下:
update tbl_name set name = 'foo' where name = 'bar'
我的第一个结果是这样的-但这很讨厌,不是吗?
list = ModelClass.objects.filter(name = 'bar')for obj in list:
obj.name = 'foo'
obj.save()
有没有更优雅的方式?
回答:
UPD Django 2.2版本现在具有bulk_update。
请参阅以下django文档部分
一次更新多个对象
简而言之,你应该可以使用:
ModelClass.objects.filter(name='bar').update(name="foo")
你还可以使用F对象来执行诸如增加行数之类的操作:
from django.db.models import FEntry.objects.all().update(n_pingbacks=F('n_pingbacks') + 1)
请参阅文档:https : //docs.djangoproject.com/en/1.9/topics/db/queries/
但是,请注意:
- 这不会使用
ModelClass.save
方法(因此,如果你内部有逻辑,则不会被触发)。 - 没有Django信号将被发射。
- 你无法
.update()
在切片的QuerySet
上执行,而必须在原始QuerySet
上执行,因此你需要依靠.filter()and .exclude()
方法。
以上是 如何使用Django批量更新? 的全部内容, 来源链接: utcz.com/qa/434532.html