按特定顺序更新查询集

时间:2015-04-13 10:39:26

标签: django django-queryset

我有一个"索引"字段存储随之而来的整数范围,为了安全起见,我将其设置为唯一。

现在我想将此字段增加一个,以保持唯一,我按降序更新值:

MyModel.objects.all().order_by('-index').update(index=F('index')+1)

让我感到惊讶的是,在某台计算机上是一个IntegrityError 被提出并抱怨重复的索引值。

我错过了什么吗?我可以一个一个地保存记录吗?

提前感谢!

更新

我认为根本问题是 SQL UPDATE命令中没有ORDER BY (请参阅UPDATE with ORDER BY,还有SQL Server: UPDATE a table by using ORDER BY

显然django只是将我的语句转换为带有ORDER_BY的SQL UPDATE,这会导致一个未定义的行为,并为每台机器创建不同的结果。

0 个答案:

没有答案