了解我可以向 Django 的 ImageField 驗證器添加驗證器以限制檔案擴展名型別,如下所示。但就通過 Admin 上傳顯示的錯誤訊息而言——如果我上傳非影像型別,我仍然會看到標準檔案型別串列(通過 PIL 允許的型別)。如果我上傳的影像型別不在下面我的自定義 allowed_extensions 中,我會看到我的自定義訊息。如何覆寫 Django 的默認 ImageField 處理,并顯示我的自定義錯誤訊息,無論上傳什么型別的檔案(例如,當按照下面的示例上傳 .png 以外的任何檔案時)?
class MM(models.Model):
file_extension_validator = FileExtensionValidator(
allowed_extensions=['png'],
message='File extension not allowed. Allowed extensions include .png'
)
image = models.ImageField(
help_text='Upload images only (.png).',
validators=[file_extension_validator],
max_length=255,
blank=False,
null=False
)
uj5u.com熱心網友回復:
問題不是模型欄位,而是表單欄位。表單欄位有一個默認驗證器,列出了 PIL 支持的所有擴展。
您可以創建一個特殊的表單欄位ModifiedImageField并指定在這種情況下ModelForm將使用的MyModelAdmin:
from django.contrib import admin
from django.core.validators import FileExtensionValidator
from django import forms
image_validator = FileExtensionValidator(
allowed_extensions=['png'],
message='File extension not allowed. Allowed extensions include .png'
)
class ModifiedImageField(forms.ImageField):
default_validators = [image_validator]
class MyModelAdminForm(forms.ModelForm):
imagefield = ModifiedImageField()
class MyModelAdmin(admin.ModelAdmin):
form = MyModelAdminForm
其中,imagefield是的名稱ImageField您要更換驗證。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361111.html
