У меня проблема с тестированием метода API.
У меня есть модель Game с таким полем:
background = models.ImageField(max_length=255, null=True, blank=True, storage=s3_storage, upload_to='game_back/%Y/%m/%d')
Сериализатор для этой модели выглядит так:
class GameSerializer(serializers.ModelSerializer):
class Meta:
model = Game
fields = (<list_of_fields>, 'background')
Я попытался написать тест, который передает изображение кота на эту модель. Но у меня проблема с методом сборки Djna go для публикации.
Если я напишу:
file = open('<path_to>/test_image.png', 'rb')
content_bytes = file.read()
img = SimpleUploadedFile("uni_image.png", content_bytes, content_type="image/png")
response = self.client.post(
reverse('game_create'),
data={'background': img},
format="multipart"
)
Django вызовите исключение UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
в строке с client.post
Я попытался передать данные в кодировке base64 вместо использования SimpleUploadedFile, но в этом случае мой сериализатор API не может проверить и сохранить файл изображения.
Спасибо за реакцию!