我想用 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()
有没有更优雅的方式?
Django 2.2 版本现在有一个bulk_update。
请参阅以下 django 文档部分
一次更新多个对象
简而言之,您应该能够使用:
ModelClass.objects.filter(name='bar').update(name="foo")
您还可以使用F对象来执行诸如递增行之类的操作:
F
from django.db.models import F Entry.objects.all().update(n_pingbacks=F('n_pingbacks') + 1)
请参阅文档。
但是,请注意:
ModelClass.save
.update()
.filter()
.exclude()