0
我有一个模型的Django应用程序。我需要根据升序ID更新模型对象。像这样的东西。如何通过命令更新
MyModel.objects.filter(my_field='value').order_by("id").update(another_field='anotheValue')
我可以保证更新会按顺序按顺序发生吗?
我有一个模型的Django应用程序。我需要根据升序ID更新模型对象。像这样的东西。如何通过命令更新
MyModel.objects.filter(my_field='value').order_by("id").update(another_field='anotheValue')
我可以保证更新会按顺序按顺序发生吗?
由于您已经订购了使用ID的查询集,因此应该按顺序更新。
从文档,
使用update()还可以防止竞争条件,其中一些可能 变化在数据库中的时间装载 物体之间的周期短,调用save()。
所以我认为排序可能并不重要。但是是完全肯定的是,你可以遍历项目并更新它们:
rows = MyModel.objects.filter(my_field='value').order_by("id")
for row in rows:
row.another_field = 'another value'
row.save()
然而,update
方法将生成一个SQL查询,那里的迭代会产生许多。所以这可能是一个性能问题。