cro*_*bar 6 python django django-models django-orm
获取查询集并在传统循环中对其进行迭代,使用 保存对每个项目的更改是否有效save()?例如
for mod in mymodel.objects.all():
# modify
mod.name = 'new name or whatever'
# Save
mod.save()
Run Code Online (Sandbox Code Playgroud)
如果没有,有没有更好的方法?文档说明调用会save()访问数据库,这就是我问的原因。我是 Django(和 Python)的相对新手。在实际情况下,我不会遍历整个数据库。
效率不高,但有时你必须这样做。但是,您可以使用,.update()特别是如果它与您想要输入的值相同,或者有一种简单的方法来预测它们
所以对于你的例子:MyModel.objects.all().update(name='new name'),这不会循环整个表,它几乎可以转换为UPDATE my_model SET name = 'new name'
您也可以按照过滤器进行多次更新,参考:https ://docs.djangoproject.com/en/1.7/topics/db/queries/#updating-multiple-objects-at-once