Python Django:在循环中保存queryset项是否有效?

Python Django:在循环中保存queryset项是否有效?,python,django,django-models,django-orm,Python,Django,Django Models,Django Orm,获取查询集并在常规循环中对其进行迭代,使用save()保存对每个项的更改是否有效?e、 g for mod in mymodel.objects.all(): # modify mod.name = 'new name or whatever' # Save mod.save() 如果没有,还有更好的办法吗?文档说明调用save()会命中数据库,这就是我询问的原因。我是Django(和Python)的新手。在实际情况中,我不会遍历整个数据库。效率不高,但有时

获取查询集并在常规循环中对其进行迭代,使用
save()
保存对每个项的更改是否有效?e、 g

for mod in mymodel.objects.all():

    # modify
    mod.name = 'new name or whatever'

    # Save
    mod.save()

如果没有,还有更好的办法吗?文档说明调用
save()
会命中数据库,这就是我询问的原因。我是Django(和Python)的新手。在实际情况中,我不会遍历整个数据库。

效率不高,但有时您必须这样做。但是,您可以使用
.update()
,特别是如果它与您要输入的值相同,或者如果有一种简单的方法可以预测它们

因此,对于您的示例:
MyModel.objects.all().update(name='new name')
,这不会在整个表中循环,它几乎可以转换为
update my_model SET name='new name'


您也可以按照过滤器进行多次更新,ref:

实际上,我的示例暗示我希望所有的值都相同,但实际上情况并非如此。不过,我想你已经回答了这个问题,在我的真实案例中,这是不可避免的,因为我想为每一项记录尝试的操作(发送电子邮件)是否成功。