You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django动态创建Model记录报错:ID期望数值类型却收到参数字符串

问题根因

你拼接出来的是完整的字符串,Python不会将这段字符串自动解析为模型构造函数的多个关键字参数,而是会把整个字符串作为第一个位置参数传入,而Django模型构造函数的第一个位置参数默认对应主键id字段,因此触发了「id期望接收数值但收到字符串」的类型错误。你手动写参数的写法是直接传入多个关键字参数,和传入单个字符串参数的运行逻辑完全不同。

修复方案

不要拼接参数字符串,直接构造关键字参数字典,再通过**语法将字典拆包为关键字参数传给模型构造函数即可,修改后代码如下:

for row in table:
    params = {}
    for ind, col in enumerate(config['header_columns']):
        params[col['title']] = row[ind]
    data = shipment(**params)
    data.save(using="integration")
额外注意

如果模型里QtyOrdered、QtyShipped这类字段是数值类型,DispatchDate是日期类型,你需要在构造参数字典时先把对应row[ind]的字符串值转换为对应类型,否则后续保存时可能会触发字段类型不匹配的报错。

内容的提问来源于stack exchange,提问作者user3431437

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:36:04