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

Django数据库填充JSON序列化格式转换报错处理求助

问题排查及解决方案

错误原因

你获取的参数d是json.load读取生成的列表结构,每个元素是单条记录的字典。使用for i in d遍历列表时,i本身就是列表内的字典对象,不是列表的整数下标索引,你用d[i]的写法相当于用字典作为列表的索引取值,自然触发TypeError: list indices must be integers or slices, not dict报错,和Django要求的格式无关。

修正代码

推荐直接遍历列表元素重构符合要求的结构,语法更简洁不易出错:

def re_serialize_reg_json(d, output_json_path):
    formatted_data = []
    for item in d:
        # 构造fields字段内的属性
        fields = {
            "Name": item["Name"],
            "Distributor": item["Distributor"],
            "State": item["State"],
            "Brand": item["Brand"],
            "Cell": item["Cell"],
            "EmailAddress": item["email address"],
            "Notes": item["Notes"]
        }
        # 拼接Django要求的序列化结构
        formatted_data.append({
            "pk": item["pk"],
            "model": item["model"],
            "fields": fields
        })
    # 直接写入结果文件,后续可直接用于loaddata
    import json
    with open(output_json_path, "w", encoding="utf-8") as f:
        json.dump(formatted_data, f, ensure_ascii=False, indent=2)
    return formatted_data

后续操作

生成的格式化JSON文件可直接执行Django命令导入数据库:
python manage.py loaddata territorymanagers_formatted.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:24:02