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

Django模型存储Base64文件报错:无法序列化ContentFile对象

问题原因及修复方案

你的错误出在直接把ContentFile对象传给模型的save()方法,Django模型的save()方法不接受这种参数,它会尝试序列化这个对象,所以触发了TypeError。

正确操作步骤

  1. 将ContentFile对象赋值给模型对应的文件字段,而非传给save()
  2. 调用无参数的save()方法保存模型实例

修正后的代码

import base64
from django.core.files.base import ContentFile

# 假设你的模型类是SomeModel,文件字段名为image_file
somemodel = SomeModel()  # 也可以是从数据库获取的已有实例,比如SomeModel.objects.get(id=1)

file = "data:image/png;base64,iVBORw0KGgoAAAANSUhEU..."
format, imgstr = file.split(';base64,') 
ext = format.split('/')[-1] 

data = ContentFile(base64.b64decode(imgstr), name='temp.' + ext)
# 关键:把ContentFile赋值给模型的文件字段
somemodel.image_file = data
# 调用无参数的save()完成保存
somemodel.save()

补充说明

要确保你的模型中定义了正确的文件字段,示例如下:

from django.db import models

class SomeModel(models.Model):
    image_file = models.ImageField(upload_to='images/')  # 普通文件用FileField即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:13:10