поднять ValidationError не работает. Dgango - PullRequest
0 голосов
/ 22 марта 2020

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

Forms.py

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 }}
            
            {% for error in form.non_field_errors %}
                {{error}}
            {% endfor %}
            
            {% 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 %}
...