Как сделать поле изображения в Django ModelForm обязательным для заполнения
У меня есть Django ModelForm с полем изображения, и я хочу добавить валидацию на пустое поле формы изображения. То есть, я хочу, чтобы системное сообщение о валидации отображалось, когда пользователь не выбрал изображение.
Я пробовал, но это не работает так, как я ожидал, потому что мое сообщение об ошибке проверки отображается только тогда, когда пользователь выбирает не изображение, а обрабатывает форму при отсутствии выбора. Короче говоря, я хочу добавить обязательный атрибут к полю изображения, тем самым заставляя пользователя выбрать правильное изображение, прежде чем продолжить. Вот код моей модели:
class ProfileUpdateForm(forms.ModelForm):
class Meta:
model = Profile
fields = [ 'image']
def clean_image(self):
image = self.cleaned_data.get('image')
if not image or image == "":
raise forms.ValidationError(('Invalid value'), code='invalid')
return image
Кто-то должен помочь с решением, как лучше решить эту проблему.
Вы можете установить требуемое поле, используя метод __init__()
:
class ProfileUpdateForm(forms.ModelForm):
class Meta:
model = Profile
fields = [ 'image']
def __init__(self, *args, **kwargs):
super(ProfileUpdateForm, self).__init__(*args, **kwargs)
self.fields['image'].required = True
Вы также можете изменить модель профиля, убедившись, что изображение не может быть null/blank. Это может быть сделано с помощью models.ImageField([..], blank=False, null=False)
Попробуйте это:
class ProfileUpdateForm(forms.ModelForm):
image = forms.ImageField(required=True)
class Meta:
model = Profile
fields = [ 'image']