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

Django中TypeError:AllCompany对象无法JSON序列化(无自定义代码栈追踪)

解决Django中Object of type AllCompany is not JSON serializable序列化报错

问题场景

Django开发时碰上个头疼的TypeError,提示Object of type AllCompany is not JSON serializable,但报错栈全是Django库的代码,完全看不到自己写的业务代码在哪出问题。

排查经过

  1. 先通过请求URL定位到对应的视图函数
  2. 用打印语句做二分排查,来回试了好几次都没定位到问题点
  3. 最后才发现,是执行request.session['variance_dict'] = variance_dict的时候,variance_dict里藏着一个AllCompany的模型对象——Django在session序列化时不认这个对象,直接报错了

踩坑提醒

刚学MVC控制层的话很容易忽略:Django的session数据不是在赋值时就序列化,而是在视图函数return后的请求收尾阶段统一做序列化操作。所以哪怕你是在视图中间步骤给session存了数据,也要确保里面的内容都是可JSON序列化的类型。

解决办法

别直接把模型对象塞进session,要提取对象里可序列化的字段(比如ID、名称这些基础类型)存成字典再赋值:

# 错误示范:直接存模型对象
request.session['variance_dict'] = {'company': AllCompany.objects.get(id=1)}

# 正确写法:提取可序列化字段
company = AllCompany.objects.get(id=1)
request.session['variance_dict'] = {
    'company_id': company.id,
    'company_name': company.name
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:06:29