1 回答

TA贡献1836条经验 获得超3个赞
Django 有bulk_create queryset 方法,它在一个数据库查询中添加多条记录(有效的方式)。所以你的代码应该是这样的:
首先重写您的函数 getExchangeRates 以便您获得所有货币的一个字典,而不是每种货币的字典列表
rates = {}
...
for rate_symbol in ['USD', 'GBP', 'HKD', 'AUD', 'JPY', 'SEK', 'NOK']:
try:
rates[rate_symbol] = rates_from_rdata[rate_symbol]
except KeyError:
logging.warning('rate for {} not found in rdata'.format(rate_symbol))
pass
return rates
然后迭代 dict 创建模型实例并在此之后批量保存它们。
rates = getExchangeRates()
fixerio_rates = [Fixerio_rates(currency=currency, rate=rate)
for currency, rate in rates.items()]
Fixerio_rates.objects.bulk_create(fixerio_rates)
添加回答
举报