Django Загрузить SVG в ImageField - PullRequest
0 голосов
/ 11 сентября 2018

Нужно посмотреть, придумал ли кто-нибудь творческий подход к хранению файлов SVG в ImageField.

Из коробки django не поддерживает хранение файлов SVG в ImageField.Существует (несколько) хаков , которые позволяют сохранять SVG, НО конкретная проблема, с которой я сталкиваюсь, заключается в том, что когда объект с SVG в ImageField извлекается из базы данных,если соответствующий файл отсутствует в хранилище (по любой причине), возникает ошибка IOError, когда пытается обновить измерения ( здесь ).Это действительно не идеальное поведение.В идеале, django предложит какую-то опцию, чтобы предотвратить обновление полей измерения, но это, по-видимому, недоступно.

Для контекста рассмотрим приложение, в которое пользователю необходимо загрузить логотип.Немного напрягается поддерживать отдельные модели для файлов JPEG или PNG и файлов SVG.Для проектов DRF (которыми я являюсь), возможно, здесь есть модель с прокси-моделью, использующая сериализатор с динамической моделью .

class PublicImage(IsSVGMixin, SomeModelMixin):
    id = models.UUIDField(primary_key=True, 
                          default=uuid.uuid4, 
                          editable=False)
    image = models.ImageField(width_field='width',
                          height_field='height',
                          upload_to='public_images')
    width = models.IntegerField(null=True, blank=True)
    height = models.IntegerField(null=True, blank=True)
...