Django-循环遍历记录并更新循环中的记录?
我似乎找不到这方面的文档,但我想在QuerySet示例的循环中更新记录:Django-循环遍历记录并更新循环中的记录?,django,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") 但这似乎效率低下,因为我已
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")
但这似乎效率低下,因为我已经有了记录,所以不需要再次查询它了吗
谢谢只需使用
保存
:
data = Site.objects.all()
for i in data:
# ... do stuff
# i.update(field="value")
i.field = value
i.save()
n、 更新循环中的对象是非常昂贵的,特别是对于大量的对象。而且,不管怎样,保存都会花费您一个额外的查询。只需使用
save
:
data = Site.objects.all()
for i in data:
# ... do stuff
# i.update(field="value")
i.field = value
i.save()
n、 更新循环中的对象是非常昂贵的,特别是对于大量的对象。而且,不管怎样,保存操作都需要额外的查询。如果要为每个具有相同值的对象更新字段
Site.objects.all().update(field='value')
应该可以工作。如果要为每个具有相同值的对象更新字段Site.objects.all().update(field='value'))
应该可以工作。它用于监控脚本,定期收集我所有站点的数据,然后更新记录,因此我想速度没那么重要,您建议保持原样还是使用“保存”?由您决定。使用update
确实可以聚合常见更新,但使用save更容易理解。如果我需要更新queryset本身呢??此代码将更新数据库中的数据,并且不会更改查询本身中的值@我不确定我是否明白?在上面的代码中,我们在查询集中循环,并更改查询集中模型中的值。它用于监视脚本,定期收集我所有站点的数据,然后更新记录,因此我想速度没有那么重要,您建议保持原样还是使用“保存”?由您决定。使用update
确实可以聚合常见更新,但使用save更容易理解。如果我需要更新queryset本身呢??此代码将更新数据库中的数据,并且不会更改查询本身中的值@我不确定我是否明白?在上面的代码中,我们在查询集中循环并更改查询集中的模型中的值。