"TypeError: не удается сериализовать объект 'ContentFile'".

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


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

data = ContentFile(base64.b64decode(imgstr), name='temp.' + ext)
somemodel.save(data)

я хочу сохранить base64 файл-носитель в файловом поле модели Django, я ожидаю сохранить данные, но получаю typeerror cannot serialize 'ContentFile' object", пожалуйста, кто-нибудь скажите мне, где я сделал неправильно

Django не может сериализовать ContentFile объекты напрямую. Запишите ContentFile в временный файл и затем сохраните этот файл в модели в поле :

import base64
import uuid
from django.core.files.base import ContentFile
from django.core.files.storage import default_storage

file = "data:image/png;base64,iVBORw0KGgoAAAANSUhEU..."
format, imgstr = file.split(';base64,')
ext = format.split('/')[-1]
data = ContentFile(base64.b64decode(imgstr))
file_name = '{}.{}'.format(uuid.uuid4(), ext)
path = default_storage.save('tmp/' + file_name, data)
somemodel.filefield = path
somemodel.save()
Вернуться на верх