Как сделать поле изображения в 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']
Вернуться на верх