Django:如何一次更新多个记录?

1 投票
3 回答
7288 浏览
提问于 2025-04-16 09:25

我该如何高效地更新查询集中的多个记录呢?

我是不是只需要遍历这个查询集,修改每一条记录,然后对每条记录都调用一下 save() 方法?这样做和 psycopg2 的 executemany 有什么区别吗?

3 个回答

0

你可以使用QuerySet的批量更新功能。

举个例子:

YourModel.objects.bulk_update(queryset_or_list_of_objs, ["field1", "field2", ...])
2

你可以使用查询集的更新方法。这里有相关的文档:

http://docs.djangoproject.com/en/dev/ref/models/querysets/#update

如果你查看代码,会发现它确实会遍历这些项目。实际上,这就是Django后台在对多个项目进行“批量”操作时所使用的方法。

6

如果你需要给每条记录更新不同的值,那当然得一个一个地处理每条记录。如果你想把它们都更新成一样的值,那就直接用查询集的更新方法就可以了。

撰写回答