Кодек 'utf-8' не может декодировать байт 0xff в позиции 0: недопустимый начальный байт UnicodeDecodeError
я работаю с djangorestFramework и в сериализаторах у меня есть изображение, которое при получении выдает ошибку 'utf-8':
from rest_framework import serializers
from backend.models.productos import Productos
from backend.models.categoria import Categoria
from backend.serializers.CategoriaSerializers import Categoriaserializers
class ProductosSerializers(serializers.ModelSerializer):
#Categorias = Categoriaserializers()
class Meta:
model = Productos
fields = "__all__"
this на localhost:8000/products возвращает следующее:
[
{
"id_productos": 8,
"codigo": 12,
"producto": "Carro",
"imagen": "http://localhost:8000/media/productos/bulgakov-mijail-el-maestro-y-margarita.jpg",
"stock": 0,
"precio_compra": 0.0,
"precio_venta": 0.0,
"venta": 0,
"fecha": "2021-10-12T16:02:06.167755Z",
"id_categoria": 2
}
]
но в дополнение к этому мне нужно ввести категорию продукта, и я делаю это следующим образом:
from rest_framework import serializers
from backend.models.productos import Productos
from backend.models.categoria import Categoria
from backend.serializers.CategoriaSerializers import Categoriaserializers
class ProductosSerializers(serializers.ModelSerializer):
Categorias = Categoriaserializers()
class Meta:
model = Productos
fields = "__all__"
#fields = ["id_productos","codigo","producto","imagen","stock","precio_compra","precio_venta","venta","fecha","Categorias"]
def to_representation(self, obj):
productos = Productos.objects.get(id_productos=obj.id_productos)
categorias = Categoria.objects.get(productos=obj.id_productos)
return{
'id_producto': productos.id_productos,
"codigo": productos.codigo,
"producto" : productos.producto ,
"imagen": str(productos.imagen),
"stock": productos.stock,
"precio_compra" : productos.precio_compra,
"precio_venta": productos.precio_venta,
"venta": productos.venta,
"fecha": productos.fecha,
"Categorias":{
"id_categoria": categorias.id_categoria,
"categoria": categorias.categoria,
"fecha": categorias.fecha
}
}
и я получаю это обратно
[
{
"id_producto": 8,
"codigo": 12,
"producto": "Carro",
"imagen": "productos/bulgakov-mijail-el-maestro-y-margarita.jpg",
"stock": 0,
"precio_compra": 0.0,
"precio_venta": 0.0,
"venta": 0,
"fecha": "2021-10-12T16:02:06.167755Z",
"Categorias": {
"id_categoria": 2,
"categoria": "Componentes",
"fecha": "2021-10-11T15:50:24.101968Z"
}
}
]
как вы видите, я получаю изображение как ("products/bulgakov-mijail-the-teacher-and-margarita.jpg") по
"imagen": str(products.imagen)
Потому что если я удалю его, то получу следующее сообщение об ошибке
как я могу получить ulr изображения, как в первом фрагменте кода, и удалить str()
спасибо заранее
Вы не сказали, какой тип imagen
, но если это ImageField
, то существует свойство для имени url
Вы можете написать "imagen": products.imagen.url
вместо "imagen": str(products.imagen)