Django - 循环遍历记录并更新循环内的记录?

时间:2018-01-08 16:31:05

标签: django

我似乎无法找到相关的文档,但我想在QuerySet示例的循环中更新记录:

data = Site.objects.all()
for i in data:
 ... do stuff
 i.update(field="value")

我知道我可以做到:

data = Site.objects.all()
for i in data:
 ... do stuff
 Site.objects.filter(pk=i.pk).update(field="value")

但这似乎效率低下,因为我已经有了记录,所以不应该再次查询它吗?

由于

1 个答案:

答案 0 :(得分:2)

只需使用save

data = Site.objects.all()
for i in data:
    # ... do stuff
    # i.update(field="value")
    i.field = value
    i.save()

n.b。,更新循环中的对象非常昂贵,特别是对于大量对象。而且,无论如何,保存将花费您额外的查询。