Django:将过滤后的queryset的整数字段按顺序(高效)编号



可以通过执行以下操作为我正在查找的过滤查询集中的整数字段分配序号,但是每次我执行save()时都会发出查询。怎样才能挽救它呢?

queryset = Model.objects.filter(user=user)
for i, item in enumerate(queryset, start=1):
item.index = i
item.save()

我不完全理解你的问题,但如果你的问题是它发出太多的查询(每个.save()一个)。然后你可以使用bulk_update

queryset = Model.objects.filter(user=user)
objs = []
for i, item in enumerate(queryset, start=1):
item.index = i
objs.append(item)
Model.objects.bulk_update(objs, ['index'])

最新更新