Я хочу сериализовать модель, используя M2M через отношение. Он отлично работает для всех других полей, кроме ImageField
. Ниже приведены мои файлы модели и сериализатора:
models.py
class Product(models.Model):
name = models.CharField('Name', max_length=255, null=True, blank=True)
description = models.TextField('Description', max_length=1000, null=True, blank=True)
price = models.IntegerField('Price', default=0)
image = models.ImageField('Product Image', null=True, blank=True)
class Cart(models.Model):
user = models.CharField('User ID', default="1000", max_length=255)
items = models.ManyToManyField("Product", through='CartActions', blank=True)
modified = models.DateField('Last Modified')
class CartActions(models.Model):
product = models.ForeignKey('Product', on_delete=models.CASCADE)
cart = models.ForeignKey('Cart', on_delete=models.CASCADE)
quantity = models.PositiveSmallIntegerField(default=0)
serializers.py
class ProductSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Product
fields = ['id', 'name', 'description', 'price', 'image']
class CartSerializer(serializers.HyperlinkedModelSerializer):
items = CartActionsSerializer(source='cartactions_set', many=True)
class Meta:
model = Cart
fields = ['id', 'user', 'items']
class CartActionsSerializer(serializers.HyperlinkedModelSerializer):
name = serializers.ReadOnlyField(source='product.name')
price = serializers.ReadOnlyField(source='product.price')
image = serializers.ReadOnlyField(source='product.image') # Adding this line gives error
class Meta:
model = CartActions
fields = ['name', 'price', 'image', 'quantity']
Это ошибка, которую я получаю при обращении к API:
UnicodeDecodeError в /store/api/cart/
Кодек utf-8 не может декодировать байт 0xff в позиции 0: недопустимый начальный байт
Это пример ответа, который я получаю от /api/products
API:
{
"id": 1,
"name": "Product 1",
"description": "This is a sample description",
"price": 500,
"image": "http://192.168.43.210:9000/media/sample_product.jpeg"
}
Я перепробовал почти все ссылки в stackoverflow и других веб-сайтах, но нигде не могу найти точно такую же проблему. Любая помощь очень ценится. Заранее спасибо.