Имеют в проекте следующее правило: поле изображения является необязательным, а изображение по умолчанию является неинформированным случаем для пользователя.Изображения отправляются пользователем в django и должны иметь размер (ширина> = 900, высота> = 400).
Я пытаюсь проверить размеры в admin.py, но возникает проблема, когда япопытаться зарегистрироваться, если в поле изображения есть аргумент по умолчанию.
Дает ошибку изображения, не найденную, даже если она находится в каталоге.Без функции проверки в admin.py она работает нормально.
models.py
class Event(models.Model):
banner = models.ImageField('banner', upload_to='events/banners', default='events/banners/banner_padrao_eventos.png', blank=True)
admin.py
class EventForm(forms.ModelForm):
class Meta:
model = Event
fields = '__all__'
def clean_banner(self):
banner = self.cleaned_data.get('banner')
if banner:
img = Image.open(banner)
width, height = img.size
max_width = 900
max_height = 400
if width < max_width or height < max_height:
raise forms.ValidationError(
'Image is incorrectly sized:% s x% s pixels. Please insert an image with% s x% s pixels.'
% (width, height, max_width, max_height))
if len(banner) > (3 * 1024 * 1024):
raise forms.ValidationError('Very large image file (maximum of 3MB).')
name_img, ext = banner.name.split('.')
if not (ext.lower() in ['png', 'jpg', 'jpeg']):
raise forms.ValidationError('Please use the image in JPG, JPEG or PNG format.')
else:
raise forms.ValidationError('The loaded image could not be read.')
return banner
Как сделать изображение по умолчанию для проверки при проверке?