Python 在ModelAdmin.save_model()中使用QuerySet.update()而不是object.save()可以吗

Python 在ModelAdmin.save_model()中使用QuerySet.update()而不是object.save()可以吗,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我有相当标准的save_model()覆盖,它计算一些值,最后调用object.save() 我正在重写应用程序以获得更好的可伸缩性,并且读到.save()不是线程安全的,不允许进行数据分区。建议的最佳做法是使用update() 我的问题是:如果在save_model()中执行update()而不是save(),可以吗?我看不出它有什么坏处,是吗?我认为文档中关于的警告是相关的。如果您没有使用任何信号、覆盖模型的保存方法或使用auto\u now字段选项,我想不出任何其他潜在问题 请注意,upd

我有相当标准的save_model()覆盖,它计算一些值,最后调用object.save()

我正在重写应用程序以获得更好的可伸缩性,并且读到.save()不是线程安全的,不允许进行数据分区。建议的最佳做法是使用update()


我的问题是:如果在save_model()中执行update()而不是save(),可以吗?我看不出它有什么坏处,是吗?

我认为文档中关于的警告是相关的。如果您没有使用任何信号、覆盖模型的保存方法或使用
auto\u now
字段选项,我想不出任何其他潜在问题

请注意,
update()
方法直接转换为SQL语句。这是直接更新的批量操作。它不会在您的模型上运行任何
save()
方法,也不会发出
pre\u save
post\u save
信号(这是调用
save()
的结果),也不会遵守
auto\u now
字段选项。如果要保存
QuerySet
中的每个项目,并确保对每个实例调用
save()
方法,则不需要任何特殊函数来处理该问题。只需在它们上面循环并调用
save()


感谢您的回答@Alasdair。我没有使用任何信号,也没有重写模型的save()方法。另外,我将只更新一个基于PK的对象。我要试一试。