Rise ValidationError в формах Django - PullRequest
1 голос
/ 22 марта 2020

Любой, кто может объяснить мне, почему моя ошибка ValidationError в моей форме не работает? Я вижу «TEXT» в моем терминале, но ошибка ValidationError не отображается.

def clean(self):
    cleaned_data = super(CheckInForm, self).clean()
    new_room = cleaned_data.get('room')
    new_name = cleaned_data.get('name')

    if Student.objects.filter(room=new_room).count() > 3:
        if not Student.objects.filter(room=new_room, name__icontains=new_name):
            print('TEXT')
            raise ValidationError('The room is full')

Стоит также отметить, что аналогичная функция def clean_room(self): отлично работает в моем коде. В этой функции raise ValidationError работает правильно.

def clean_room(self):
    new_room = self.cleaned_data['room']
    if new_room == '':
        raise ValidationError('This field cannot be empty')
    return new_room

Полная длина кода:

class CheckInForm(forms.ModelForm):
class Meta:
    model = Student
    fields = ['room', 'name', 'faculty', 'place_status', 'form_studies',
              'group', 'sex', 'mobile_number', 'fluorography', 'pediculosis',
              'contract_number', 'agreement_date', 'registration', 'citizenship',
              'date_of_birthday', 'place_of_birthday', 'document_number', 'authority',
              'date_of_issue', 'notation'
              ]
    widgets = {'room': forms.TextInput(attrs={'class': 'form-control'}),
               'name': forms.TextInput(attrs={'class': 'form-control'}),
               'faculty': forms.TextInput(attrs={'class': 'form-control'}),
               }

def clean(self):
    cleaned_data = super(CheckInForm, self).clean()
    new_room = cleaned_data.get('room')
    new_name = cleaned_data.get('name')

    if Student.objects.filter(room=new_room).count() > 3:
        if not Student.objects.filter(room=new_room, name__icontains=new_name):
            print('TEXT')
            raise ValidationError('The room is full')


def clean_room(self):
    new_room = self.cleaned_data['room']
    if new_room == '':
        raise ValidationError('This field cannot be empty!')
    return new_room

{% extends 'hostel/base_home.html' %}

{% block check_in %}
<form action="{% url 'check_in_update_url' id=student.id %}" method="post">
    {% csrf_token %}
    {% for field in bound_form %}
        <div class="from-group">
            {{ field.label }}
            {{ field }}

            {% if field.errors %}
                <div class="alert alert-danger">
                    {{ field.errors }}
                </div>
            {% endif %}
        </div>
    {% endfor %}

    <button type="submit" class="btn btn-primary">Update</button>
</form>
{% endblock %}

1 Ответ

0 голосов
/ 22 марта 2020

Я решил эту проблему!

{% for error in form.non_field_errors %}
{{error}}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...