如何执行批量更新而不是更新每一行?

2024-05-14 17:54:09 发布

您现在位置: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

我的代码现在就是这样做的:

  1. 从数据库中获取帐户行
  2. 将account对象传递给单独的方法
  3. 此方法执行一些业务规则并返回新的soc代码
  4. 更新帐户行

在这里,我将分别更新每个帐户行,有没有更好的方法来实现这一点,如下面所示:

#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中执行批量更新?你知道吗


Tags: anddjango方法代码savecode帐户account
1条回答
网友
1楼 · 发布于 2024-05-14 17:54:09

使用F对象-请参见:How to 'bulk update' with Django?。你知道吗

即使要逐个保存,也应将代码更改为:

for id in accIdList:
    acc = account.objects.get(id)
    acc.soc = getAccSocCode(acc)
    acc.save()

相关问题 更多 >

    热门问题