我正在尝试更新查询集,我想计算一个字段顺序
class Temporal(model.Models):
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
name=models.CharField(max_length=60)
created_at = models.DateTimeField(auto_now_add=True)
order = models.IntegerField(null=True, blank=True)
在我的应用程序中,重要的是order_by created_at,然后传递一个订单作为索引,每次创建一个新对象时,传递值cero和其他对象需要加+1,但我想使用queryset而不是使用for循环:
items = Temporal.objects.all().order_by('-created_at')
for index, item enumerate(items):
item.order=index + 1
item.save()
假设数据库中有数千个条目,这将非常慢…提前感谢
根据django文档,你可以使用bulk_update
,所以检查链接:https://docs.djangoproject.com/en/3.2/ref/models/querysets/#bulk-update
尝试如下内容:
items = Temporal.objects.all().order_by('-created_at')
for index, item enumerate(items):
item.order=index + 1
Temporal.objects.bulk_update(items, ['order'])
。