Проверка одного поля
Часть раздела Формы путешествия по 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 usernameis_valid() вызывает этот метод после собственных проверок поля, поэтому значение уже преобразовано: DateField возвращает дату. Вызов forms.ValidationError отклоняет поле, и сообщение появляется под ним.
Метод должен return значение: то, что он возвращает, попадает в cleaned_data. Без return значение станет None.
Задание
ЛегкоВ 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)
Все уроки раздела Формы
2Формы Django
Форма DjangoСоздание формыПотренируйтесь самостоятельно: Песочница Django