Python 如何更新多个对象并从0递增到第一个(如果筛选到最后一个)
如何按顺序更新模型的所有现有对象 例如,具有customIDs1、2、3、4、5的对象 删除customid 3,然后我需要重新评估其余的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不是主键(永远不要像这样更新主键)。要调
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
序列之前是连续的,此更新将恢复序列
这将在服务器端执行一个更新查询
请参阅。是的,太好了!,我已经知道了,现在我已经知道了这个问题!,谢谢