Ich habe benutzerdefinierte clean_*
Formularmethode, die hochgeladene Bildtyp und Dateierweiterung überprüft.Ändern der Standard-Feld-Validierung in Django ModelForm
class TableModelForm(ModelForm):
def clean_image(self):
img_err = 'Unsupport image type. Please upload png, jpg or gif.'
img_formats = ['png', 'jpeg', 'gif']
img = self.cleaned_data.get('image')
if not img:
return img
img_fmt = img.image.format.lower()
img_ext = splitext(img.name)[1][1:].lower()
if any([x not in img_formats for x in [img_fmt, img_ext]]):
raise ValidationError(ugettext_lazy(img_err), code='invalid_image')
return img
Es funktioniert gut, bis das Bild des entsprechenden Format, aber ohne eine Dateierweiterung versucht wird, in welchem Fall default_validator
Kicks und ich sehe die Standard FileExtensionValidator
Fehlermeldung zu laden,:
File extension '' is not allowed. Allowed extensions are: 'bmp, bufr, cur, pcx, dcx, dds, ps, eps, fit, fits, fli, flc, fpx, ftc, ftu, gbr, gif, grib, h5, hdf, png, jp2, j2k, jpc, jpf, jpx, j2c, icns, ico, im, iim, tif, tiff, jfif, jpe, jpg, jpeg, mic, mpg, mpeg, mpo, msp, palm, pcd, pdf, pxr, pbm, pgm, ppm, psd, bw, rgb, rgba, sgi, ras, tga, webp, wmf, emf, xbm, xpm'.
Ist gibt es eine Möglichkeit, das default_validator
des ModelForm
Feldes zu ersetzen, ohne das Feld erneut zu deklarieren?
Welche Version von Django verwenden Sie? Du kannst [ticket # 28242] (https://code.djangoproject.com/ticket/28242) finden, was in Django 1.11.2 relevant ist. – Alasdair
Danke, ich benutze '(1, 11, 4, 'final', 0)', aber nicht sicher, wie das referenzierte Häkchen mir helfen könnte? –