Menu
CoddyTech

Проверка одного поля

Часть раздела Формы путешествия по Django на Coddy. Урок 10 из 20.

Доска принимает события, датированные прошлым годом. Встроенные правила знают типы и ограничения, но не особенности вашего сайта. Собственное правило для одного поля задаётся методом с именем 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 username

is_valid() вызывает этот метод после собственных проверок поля, поэтому значение уже преобразовано: DateField возвращает дату. Вызов forms.ValidationError отклоняет поле, и сообщение появляется под ним.

Метод должен return значение: то, что он возвращает, попадает в cleaned_data. Без return значение станет None.

challenge icon

Задание

Легко

В EventForm отклоняйте дату, предшествующую сегодняшней, с сообщением 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)

Все уроки раздела Формы

Потренируйтесь самостоятельно: Песочница Django