Кодек '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)

Потому что если я удалю его, то получу следующее сообщение об ошибке enter image description here

как я могу получить ulr изображения, как в первом фрагменте кода, и удалить str()

спасибо заранее

Вы не сказали, какой тип imagen, но если это ImageField, то существует свойство для имени url Вы можете написать "imagen": products.imagen.url вместо "imagen": str(products.imagen)

Вернуться на верх