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

如何在React+Django项目中修改JSONField存储的对象键名

问题根因

你当前的键名修改逻辑只做了旧键删除操作,没有将新键名和原键对应的value关联存入JSON对象,不需要调整后端实现,Django的JSONField支持任意合法的JSON键名,仅修改前端逻辑即可解决问题。

修复后的处理函数代码

handleDataChangeFunction(event, keyOrValue, keyName) {
    console.log("HANDLE JSON CHANGE")
    const inputValue = event.target.value;
    const data = {...this.state.data};

    if(keyOrValue === "value"){
        data[keyName] = inputValue;
        this.setState({ data })
    }

    if(keyOrValue === "key") {
        // 新旧键名一致时跳过操作
        if(inputValue === keyName) return
        // 可选:增加重名判断,避免覆盖已有键
        if(data.hasOwnProperty(inputValue)) {
            alert("该键名已存在,请输入其他名称")
            return
        }
        // 存储旧键对应的值
        const originValue = data[keyName]
        // 删除旧键
        delete data[keyName]
        // 写入新键值对
        data[inputValue] = originValue
        this.setState({ data })
    }
}

可选优化建议

你当前渲染键值对列表时使用数组下标作为key属性,修改键名、新增/删除条目时可能出现渲染错位,建议将渲染逻辑中的key={keyIndex}改为key={keyName},保证React能正确追踪每个条目的唯一性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:15:04