Проверка одного поля
Часть раздела Формы путешествия по Django на Coddy. Урок 10 из 20.
Форма принимает мероприятие, датированное прошлым годом. Встроенные проверки Django учитывают типы и ограничения, но не правила вашего сайта. Собственное правило для одного поля помещается в метод с именем clean_ плюс имя поля. Форма регистрации, которая резервирует имя admin для персонала:
class SignupForm(forms.Form):
username = forms.CharField(max_length=30)
def clean_username(self):
username = self.cleaned_data["username"]
if username.lower() == "admin":
raise forms.ValidationError("That name is reserved.")
return usernameis_valid() вызывает его после собственных проверок поля, поэтому значение уже преобразовано: DateField возвращает дату. Вызов forms.ValidationError отклоняет поле, и сообщение появляется рядом с ним.
Метод должен возвращать значение: то, что он возвращает, попадает в cleaned_data. Без return значение становится None.
Задание
ЛегкоВ EventForm отклоняй дату, которая предшествует сегодняшнему дню, с сообщением The date cannot be in the past. Дата сегодняшнего дня подходит.
Добавь мероприятие с датой вчерашнего дня в формате 2026-10-30: ты увидишь The date cannot be in the past.
Попробуйте сами
from django import forms
class EventForm(forms.Form):
title = forms.CharField(max_length=100)
date = forms.DateField()
place = forms.CharField(max_length=100)
description = forms.CharField(widget=forms.Textarea, required=False)
capacity = forms.IntegerField(min_value=1)
Все уроки раздела Формы
2Формы Django
Форма DjangoСоздание формыПотренируйтесь самостоятельно: Песочница Django