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

Django加载Fixture失败求助:DeserializationError及字段不存在错误

Django 3.2 Docker部署REST API启动错误解决

1. 先处理JSON布尔值导致的DeserializationError

你已经定位到问题是emoji-groups.json里的大写True/False不符合JSON规范,改成小写true/false即可。注意要检查整个文件,确保所有布尔值都完成替换,避免遗漏个别条目导致后续仍报错。

2. 解决KeyError/FieldDoesNotExist(EmojiGroup无keyword_sv等多语言字段)

这个问题核心是序列化文件的字段与当前EmojiGroup模型定义不匹配,结合你的Docker部署场景,按以下步骤排查:

排查方向1:模型字段是否变更

  • 检查项目中EmojiGroup模型代码:确认是否曾经存在keyword_sv等多语言字段,现在被删除或注释。如果是,直接编辑emoji-groups.json,将所有包含keyword_sv、keyword_xx这类不存在的字段条目删除。
  • 如果使用了django-modeltranslation或类似多语言字段库:
    • 确认settings.py中已正确配置该库(比如INSTALLED_APPS包含modeltranslation,添加了对应的中间件,配置了LANGUAGES列表)。
    • 检查容器环境中是否安装了该库的依赖,避免构建镜像时遗漏依赖包。

排查方向2:序列化文件与模型版本不一致

  • 重新生成序列化文件:在本地或容器内执行python manage.py dumpdata your_app.EmojiGroup --indent 2 > emoji-groups.json,用新生成的文件替换旧文件,确保字段与当前模型完全匹配。
  • 检查Docker镜像/挂载卷:确认部署时使用的emoji-groups.json是最新版本,避免挂载了本地旧文件或镜像中打包了过时的序列化文件。

排查方向3:数据库迁移未同步

  • 检查容器启动脚本:确保在启动Web服务前执行了python manage.py migrate命令,保证数据库表结构与当前模型定义一致。如果是Docker Compose部署,可在command中添加迁移步骤,比如:
    command: sh -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
    

排查方向4:环境配置差异

  • 确认容器内的环境变量与之前正常运行的环境一致:比如多语言字段的生成依赖特定环境变量(如ENABLED_LANGUAGES),如果容器中缺失该配置,会导致动态生成的多语言字段未加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:05:10