查看是否有人想出一种创造性的方法将SVG文件存储在ImageField中。
开箱即用的django doesn't support storing of SVG文件在ImageField中。有(几)个hack(s)可以存储SVG,但是我遇到的特定问题是,如果从数据库中检索到ImageField中带有SVG的对象,则相应的文件是(由于多种原因)在存储中不存在时(trying to update the dimensions(here),将引发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)