Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-循环遍历记录并更新循环中的记录?_Django - Fatal编程技术网

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

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") 但这似乎效率低下,因为我已

我似乎找不到这方面的文档,但我想在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")
    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本身呢??此代码将更新数据库中的数据,并且不会更改查询本身中的值@我不确定我是否明白?在上面的代码中,我们在查询集中循环并更改查询集中的模型中的值。