Отображение ошибок проверки для каждого поля с поднятой ValidationError

Нашел только старые ответы и примеры, которые я не понял об отображении ошибок в представлении.

Я создал метод clean_message в своем forms.py, который проверяет, есть ли что-то в self.message, и вызывает ValidationError, если нет.

"""
Comment
"""
class CommentForm(forms.Form):
    """
    Comment field
    """
    comment = forms.CharField(
        widget = forms.Textarea(
            attrs = {
                'class': 'form-control',
                'rows': 2 
            }
        )
    )

    def clean_comment(self):
        if self.cleaned_data['comment'] is None:
            raise form.ValidationError({'comment': ['You must enter your comment'])

А это файл просмотра. Что мне нужно для отображения ошибок, построенных, как показано выше?

<form action="comment" method="POST">
    {% csrf_token %}
    <div class="form-group">
        {{ form.comment.errors }}
        {{ form.comment }}
    </div>
    <div class="form-group">
        <input type="submit" value="Say it" class="btn btn-success"> 
    </div>
</form>

Я пытался использовать {{ form.errors }}, перебирать его, использовать {{ form.non_field_errors }} и т. д., но ничего не получилось. Я думаю, что я перезагружаю форму, и поэтому сообщения не отображаются.


person fermoga    schedule 20.03.2016    source источник
comment
Есть {{ form.errors }}. Я думаю, что документы Django довольно ясно объясняют это.   -  person Rohit Jain    schedule 20.03.2016


Ответы (1)


Чтобы отобразить ошибки на уровне формы, вы можете просто использовать: {{ form.errors }}. Но, похоже, вам нужно сообщение об ошибке на уровне поля. Для этого вам нужно изменить чистый метод как таковой:

def clean_message(self):
    if not self.message:
        raise ValidationError({'message': ['You must enter your comment'])

Таким образом, ошибка будет установлена ​​на соответствующем field.errors.

person Rohit Jain    schedule 20.03.2016
comment
Я что-то упускаю? Я сделал то, что вы сказали, но никаких сообщений. Может быть, поставить else, если форма недействительна? - person fermoga; 20.03.2016
comment
@GabrielMFernandes Как вы отображаете ошибки? Вы использовали form.errors? Или field.errors? - person Rohit Jain; 20.03.2016
comment
Я использовал form.errors. Откуда мне взять field? Прямо сейчас я переместил clean_comment в forms.py, согласно другому примеру. - person fermoga; 20.03.2016
comment
Я обновил свой вопрос новыми кодами. Пожалуйста, взгляните. - person fermoga; 20.03.2016