微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

允许通过Django管理员将SVG文件上传到ImageField

如何解决允许通过Django管理员将SVG文件上传到ImageField

事实证明,它SVGAndImageFormField与DRF没有依赖关系ImageField,它仅增加了由进行的验证django.forms.ImageField

因此,为了在Django Admin中接受SVG,我 将模型的更改为ImageFieldFileField指定了覆盖,如下所示:

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        exclude = []
        field_classes = {
            'image_field': SVGAndImageFormField,
        }

class MyModelAdmin(admin.ModelAdmin):
    form = MyModelForm

admin.site.register(MyModel, MyModelAdmin)

现在,它可以接受所有以前的图像格式以及SVG。

编辑:刚刚发现,即使您不从切换models.ImageField到,它也能正常工作models.FileField。的heightwidth属性models.ImageField仍然适用于栅格图像类型,并且将其设置None为SVG。

解决方法

我正在切换为SVG图片,以表示电子商务平台上的类别。我以前models.ImageField在Category模型中使用过存储图像,但是forms.ImageField验证无法处理基于矢量的图像(因此将其拒绝)。

我不需要对有害文件进行全面验证,因为所有上传都将通过Django
Admin完成。看起来我必须models.FileField在模型中切换到,但是我确实希望警告不要上传无效的图片。

Nick Khlestov在django-rest-framework的ImageField上写了一个SVGAndImageFormField(在文章中找到源,我没有足够的声誉来发布更多链接)。如何在Django的ImageField(而不是DRF)上使用此解决方案?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。