Как изменить отображение ошибки валидации в Django?

Я хотел создать простой datepicker, который не принимает обратные даты. В своем models.py я определил класс MealDay и отдельную функцию validate_pub_date. Логика работает отлично, но я не понимаю, как Django отображает ValidationError("Date can't be past!").

Почему это происходит именно здесь, и почему это происходит именно в теге <li>? Есть ли возможность обработать ошибку в HTML шаблоне или каким-либо другим способом добавить к нему html/css? Вот как ошибка выглядит сейчас:

enter image description here

models.py:

def validate_pub_date(value):
    if value < timezone.now() - datetime.timedelta(days=1):
        raise ValidationError("Date can't be past!")
    return value

class MealDay(models.Model):
    day = models.DateTimeField(default=timezone.now().day, validators = [validate_pub_date])
    breakfast = models.TextField(max_length=100, blank=True)
    lunch = models.TextField(max_length=100)
    dinner = models.TextField(max_length=100, blank=True)

views.py

class MealdayCreateView(CreateView):
    model = MealDay
    template_name = "mealplanner/mealday_new.html"
    form_class = CreateMealdayForm

forms.py

class CreateMealdayForm(ModelForm):

    class Meta:
        model = MealDay
        fields = '__all__'
        widgets = {
            'day': forms.DateInput(attrs={'type':'date'}),
        }

mealday_new.html

{% extends "mealplanner/base.html" %}

{% block content %}
<h1>Plan your meals!</h1>
<form action="" method="post"> {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Save">
</form>
{% endblock content %}
    {% endblock content %}

в django model (validate_field_name) метод связан с методом .is_valid(), поэтому, когда все поля modelform не получают корректного ввода, возникает ошибка валидации.

Вернуться на верх