我是 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 对象 - 请参阅:How to 'bulk update' with Django? .
即使您要逐一保存,您也应该将代码更改为:
for id in accIdList:
acc = account.objects.get(id)
acc.soc = getAccSocCode(acc)
acc.save()
关于python - 如何执行批量更新而不是更新每一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53048454/