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

Django测试加载fixtures报错:EventBlock无content_fr字段

解决Django测试中Fixture反序列化错误:EventBlock has no field named 'content_fr'

我之前遇到过几乎一模一样的问题!让我来帮你排查下可能的原因和对应的解决办法:

最常见的原因:Fixture数据与当前模型结构不匹配

你导出db.json时的EventBlock模型是包含content_fr字段的,但现在你的代码里这个字段已经被删除、重命名,或者模型结构发生了其他变更。虽然你本地执行loaddata没报错(可能本地数据库还保留着旧字段),但测试环境的数据库是全新创建的,会严格按照当前模型结构来加载数据,所以就会报错。

解决办法:重新导出适配当前模型的Fixture

直接基于当前代码的模型结构重新生成fixture文件:

# 先清空旧的fixture文件,重新导出
./manage.py dumpdata > db.json

然后把新生成的db.json替换掉测试中使用的版本,再重新运行测试。

其他可能的原因及排查方向

  • 测试环境的模型未同步更新:如果你的测试是在另一个环境(比如Docker容器、CI服务器)运行的,要确保测试环境的代码和你导出fixture的代码是同一版本,并且已经执行了最新的数据库迁移:
    ./manage.py migrate
    
  • Fixture中存在冗余字段:可以手动打开db.json,搜索"content_fr"字段,找到所有EventBlock条目里的该字段并删除。不过这个方法比较繁琐,优先推荐重新导出fixture。
  • 多语言插件遗留字段:如果之前使用了django-modeltranslation这类自动生成多语言字段的插件,后来移除了插件或禁用了该字段的翻译,也会导致fixture里的字段与模型不匹配。这种情况需要重新导出不含翻译字段的fixture,或者恢复对应的翻译配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:23:30