Django 如何按订单更新

Django 如何按订单更新,django,django-models,sql-update,sql-order-by,Django,Django Models,Sql Update,Sql Order By,我有一个带有模型的django应用程序。我需要根据递增id更新模型对象。类似这样的 MyModel.objects.filter(my_field='value').order_by("id").update(another_field='anotheValue') 我可以保证更新将按照order by进行吗?因为您已经使用id对查询集进行了排序,所以它应该按顺序更新 从文件来看 使用update()还可以防止可能发生某些情况的竞争条件 在加载之间的短时间内更改数据库 对象并调用save()


我有一个带有模型的django应用程序。我需要根据递增id更新模型对象。类似这样的

MyModel.objects.filter(my_field='value').order_by("id").update(another_field='anotheValue')

我可以保证更新将按照order by进行吗?

因为您已经使用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查询,而迭代将生成多个SQL查询。所以这可能是一个性能问题