Python 如何更新多个对象并从0递增到第一个(如果筛选到最后一个)

Python 如何更新多个对象并从0递增到第一个(如果筛选到最后一个),python,django,django-models,django-views,Python,Django,Django Models,Django Views,如何按顺序更新模型的所有现有对象 例如,具有customIDs1、2、3、4、5的对象 删除customid 3,然后我需要重新评估其余的 increment = 0 for obj in allobj: Obj.objects.filter(id=obj.id).update(customid=increment) increment = increment + 1 然后获取customid 1、2、3、4我在这里假设customid不是主键(永远不要像这样更新主键)。要调

如何按顺序更新模型的所有现有对象

例如,具有customIDs1、2、3、4、5的对象

删除customid 3,然后我需要重新评估其余的

increment = 0
for obj in allobj:
    Obj.objects.filter(id=obj.id).update(customid=increment) 
    increment = increment + 1

然后获取customid 1、2、3、4

我在这里假设
customid
不是主键(永远不要像这样更新主键)。要调整对象,可以使用:

from django.db.models import F

Obj.objects.filter(customid__gt=3).update(customid=F('customid') - 1)
这将查询
customid
列大于3的所有对象,并从该列中减去1。如果您的
customid
序列之前是连续的,此更新将恢复序列

这将在服务器端执行一个更新查询


请参阅。

是的,太好了!,我已经知道了,现在我已经知道了这个问题!,谢谢