Как сделать миниатюру изображений в сериализации Django REST Framework? - PullRequest
0 голосов
/ 21 октября 2018

Я недавно прыгнул в Django REST Framework.Прежде чем использовать его, я уменьшил изображения, используя django-imagekit .Как вы видите модели ниже, это работало хорошо, поэтому я использовал изображения оригинального размера image и изображения размера thumbnailed из image_thumbnail.

models.py

class Image(models.Model):
    ...
    image = ProcessedImageField(null=True, blank=True, upload_to=image_path,
                                processors=[Thumbnail(1000, 1400)], format='JPEG')
    image_thumbnail = ImageSpecField(
        source='image', format='JPEG', options={'quality': 40})
    ...

Проблема в том, что я не могу использовать image_thumbnail в своих сериализаторах.Я могу использовать image, но image_thumbnail выдает сообщение об ошибке A server error occurred. Please contact the administrator.

serializers.py

class ImageRandomSerializer(ModelSerializer):

    class Meta:
        model = Image
        fields = ('image', 'image_thumbnail', )

Могу ли я не оставлять изображения с фотографиями из моделей.py в serializers.py?Должен ли я сделать их миниатюру с помощью какого-нибудь инструмента миниатюр Django REST Framework?

ОБНОВЛЕНИЕ

После установки DEBUG = True выдает ошибку 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte.

1 Ответ

0 голосов
/ 21 октября 2018

Я только что нашел ответ от здесь .

Добавлен image_thumbnail = ImageField(read_only=True), и теперь он работает хорошо.

from rest_framework.serializers import ImageField

class ImageRandomSerializer(ModelSerializer):

    store = StoreDomainKeySerializer()
    image_thumbnail = ImageField(read_only=True)

    class Meta:
        model = Image
        fields = ('store', 'image', 'image_thumbnail',)
...