python - 如何执行批量更新而不是更新每一行?
问题描述
我是 python 和 Django 世界的新手。我不知道是否有更好的方法来执行以下操作:
#retrieve account row, correct soc code and save record.
for i in xrange(0,len(accIdList)):
acc = account.objects.filter(id=accIdList[i])[0]
acc.soc = getAccSocCode(acc)
acc.save()
def getAccSocCode(acc):
#apply business rules on acc
# and return new soc code
return socCode
这就是我的代码现在正在做的事情:
- 从数据库中获取帐户行
- 将帐户对象传递给单独的方法
- 此方法执行一些业务规则并返回新的 soc 代码
- 更新帐户行
在这里,我分别更新每个帐户行,有没有更好的方法,如下所示:
#retrieve account row, correct soc code and save record.
accList = []
for i in xrange(0,len(accIdList)):
acc = account.objects.filter(id=accIdList[i])[0]
acc.soc = getAccSocCode(acc)
accList.append(acc)
accList.save()
我尝试了上面的代码,但它抛出一个错误说AttributeError: 'list' object has no attribute 'save'
简而言之,如何在 Django 中执行批量更新?
解决方案
使用 F 对象 - 请参阅:如何使用 Django 进行“批量更新”?.
即使您正在逐一保存,您也应该将代码更改为:
for id in accIdList:
acc = account.objects.get(id)
acc.soc = getAccSocCode(acc)
acc.save()
推荐阅读
- python - add_message() 参数必须是 HttpRequest 对象,而不是 'str'
- wordpress - 上传文件时出现 Wordpress 错误“无法将附件插入数据库”
- javascript - 我可以将事件监听器添加到附加到 div 的 img 中吗?
- javascript - 在 Web 浏览器中重命名屏幕截图对话框的内容
- java - 有没有办法让一个类在使用它的两个类之间保持同步?
- javascript - 热门创建实时网站缩略图作为预览
- xamarin - 为什么 MediaPlayerElement 在 ContentView 中托管时不播放视频?
- javascript - 覆盖从第三方 JS 片段生成的 .class 以显示:无;在 Gatsby JS 网站中
- reactjs - 如何在严格模式下使用带有 React Hooks 的 setState 更新数组
- asp.net-core-3.1 - 如何在 .NET Core 3.1 中将 DIB 转换为位图?