Django将SVG上传到ImageField

时间:2018-09-11 15:30:38

标签: django svg django-models django-rest-framework imagefield

查看是否有人想出一种创造性的方法将SVG文件存储在ImageField中。

开箱即用的django doesn't support storing of SVG文件在ImageField中。有(几)个hack(s)可以存储SVG,但是我遇到的特定问题是,如果从数据库中检索到ImageField中带有SVG的对象,则相应的文件是(由于多种原因)在存储中不存在时(trying to update the dimensionshere),将引发IOError。这确实不是理想的行为。理想情况下,django将提供一些选项来阻止维度字段的更新,但这似乎不可用。

对于上下文,考虑用户需要上传徽标的应用程序。要为JPEG或PNG文件和SVG文件维护单独的模型会有些困难。对于DRF项目(我是),也许这里有一个使用serializer with a dynamic model的代理模型解决方案。

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)

0 个答案:

没有答案