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