Verificando um campo
Parte da seção Forms do Journey de Django da Coddy. Lição 10 de 20.
O quadro aceita eventos datados do ano passado. As regras integradas conhecem os tipos e os limites, mas não o seu site. Uma regra própria para um campo deve ficar em um método chamado clean_ seguido pelo nome do campo. Um formulário de inscrição que reserva o nome admin para a equipe:
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() chama esse método depois das verificações do próprio campo, então o valor já foi convertido: um DateField fornece uma data. Lançar forms.ValidationError rejeita o campo, e a mensagem aparece abaixo dele.
O método deve retornar o valor: o que ele retorna é armazenado em cleaned_data. Sem o return, o valor se torna None.
Desafio
FácilEm EventForm, rejeite uma data anterior a hoje com a mensagem The date cannot be in the past. Uma data de hoje é válida.
Pressione Run e adicione um evento com a data de ontem.
Experimente você mesmo
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)
Todas as lições de Forms
2Formulários do Django
Um formulário do DjangoCriando um formulárioPratique por conta própria: Playground de Django