获取查询集是否有效,并在传统循环中迭代它,使用save()
保存对每个项目的更改? e.g。
for mod in mymodel.objects.all():
# modify
mod.name = 'new name or whatever'
# Save
mod.save()
如果没有,有更好的方法吗?文档声明调用save()
命中数据库,这就是我问的原因。我是Django(和Python)的相对新手。在实际情况中,我不会迭代整个数据库。
答案 0 :(得分:1)
效率不高,但有时你必须这样做。但是,您可以使用.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