0Pricing
Django Academy · Aula

Validação personalizada com métodos clean

Adicione regras de validação por campo e por formulário

Validação personalizada com métodos clean é uma aula grátis de Django Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Django Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Django Academy inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

Beyond Built-in Rules

Model fields give you basic checks, but real apps need custom rules. Django runs your own clean methods to enforce exactly the logic you want. 🧹

Field-Level clean

To validate one field, add a method named clean_fieldname. Django calls it automatically during validation for that single field.

def clean_title(self):
    title = self.cleaned_data["title"]
    return title

Read from cleaned_data

Inside a clean method, pull the value from cleaned_data. By this point Django has already converted it to the right Python type for you.

title = self.cleaned_data["title"]

Raise to Reject

If a value breaks your rule, raise a ValidationError. Django catches it and shows the message next to that field in the form.

from django.core.exceptions import ValidationError
raise ValidationError("Title is too short.")

A Real Field Check

Here we reject titles shorter than five characters. Note you must return the value at the end so it stays in cleaned_data.

def clean_title(self):
    title = self.cleaned_data["title"]
    if len(title) < 5:
        raise ValidationError("Too short.")
    return title

Always Return the Value

The golden rule of clean_fieldname: return the cleaned value. Forget it and the field becomes None, even when input was valid.

Form-Level clean

To compare two fields, override the whole-form clean method. It runs after every field-level check has finished.

def clean(self):
    cleaned = super().clean()
    return cleaned

Call super().clean() First

Begin your form-level clean by calling super().clean(). That gives you the full cleaned_data dict gathered from the field checks.

cleaned = super().clean()
start = cleaned.get("start")
end = cleaned.get("end")

Compare Two Fields

Now you can enforce cross-field rules, like making sure end comes after start. Raise ValidationError when the relationship is wrong.

if start and end and end < start:
    raise ValidationError("End must be after start.")

Attach Errors to a Field

In form-level clean you can target one field with add_error. The message then appears right beside that input, not at the top.

self.add_error("end", "End must be after start.")

Order of Validation

Django runs each clean_fieldname first, then the form-level clean last. Knowing this order helps you place each rule in the right spot.

Quick Check

Where should a rule that compares two fields live?

Recap: Custom Validation

Well done! Use clean_fieldname for single fields and form-level clean for cross-field rules. Raise ValidationError to reject, and always return cleaned values. 🎉

Perguntas Frequentes

A aula “Validação personalizada com métodos clean” é grátis?

Sim — o texto completo de “Validação personalizada com métodos clean” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Django Academy, atualize para CoddyKit PRO. O curso de Django Academy inclui 4 aulas no total.

O que vou aprender em “Validação personalizada com métodos clean”?

Adicione regras de validação por campo e por formulário Você pratica Django Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Django Academy?

Nenhuma experiência prévia é necessária. Django Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Validação personalizada com métodos clean”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Django Academy?

Sim. Cada aula de Django Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Declarando um ModelForm e Meta.fields
  2. form.save() e commit=False
  3. Validação personalizada com métodos clean
  4. Widgets, rótulos e textos de ajuda
← Voltar para Django Academy