如何用Python Django按列批量插入多列表数据至数据库
解决多列表按列插入数据库的问题
问题原因
你用了三层嵌套循环,这会把三个列表的所有元素做笛卡尔积组合,生成5×5×5=125条数据,自然和预期的5条记录不符。三个列表的元素是一一对应的,应该按索引配对,而不是全组合。
正确代码
用zip()函数把三个列表打包,每次循环取一组对应位置的元素:
discount = ['PWD','Senior Citizen','OPD','Corporators','Special'] discount_percentage = ['20','20','6','20',''] fixed_amount = [False,False,False,False,True] # 用zip打包三个列表,循环取出每组对应元素 for dis, per, fix in zip(discount, discount_percentage, fixed_amount): # 若数据库percentage字段为数值类型,可将空字符串转为None适配字段要求 # per = int(per) if per else None discount_val = Discounts(name=dis, percentage=per, is_fixed_amount=fix) discount_val.save()
补充说明
zip()会将三个列表中索引相同的元素打包成元组,比如第一个元组是('PWD', '20', False),正好对应你要插入的第一条记录。- 如果数据库的
percentage字段是数值类型(如INT/DECIMAL),需要把空字符串转为None或0,避免类型错误,可启用代码中注释的转换逻辑。
内容的提问来源于stack exchange,提问作者marivic valdehueza
相关产品推荐
相关产品推荐

