我有一个带模型的django应用程序。我需要根据升序id更新模型对象。这样的事情。
MyModel.objects.filter(my_field='value').order_by("id").update(another_field='anotheValue')
我可以确保按照订单按顺序更新订单吗?
答案 0 :(得分:0)
由于您已使用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查询,其中迭代将生成许多。所以这可能是性能问题。