我想用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 F Entry.objects.all().update(n_pingbacks=F('n_pingbacks') + 1)
请参阅文档:https : //docs.djangoproject.com/en/1.9/topics/db/queries/
但是,请注意:
ModelClass.save
.update()
QuerySet
.filter()and .exclude()