grimboite/articles/dev/the-three-levels-of-django-...

1.1 KiB

Title Tags
Valider des données sur un modèle Django django, python, model

Quand on utilise l'ORM de Django, il existe trois niveaux de validation:

  1. Les validateurs associés directement au niveau du champ du modèle
  2. Le nettoyage des champs
  3. Le nettoyage global du modèle.

Validateurs

La première manière de valider le contenu d'un champ est aussi la plus simple. En prenant un modèle type:

from django.db import models

def validate_title(value):
    if 't' not in value:
        raise ValidationError('Title does not start with T')

class Bidule(models.Model):
    title = models.CharField(max_length=255, validators=[validate_title])

Clean_<field_name>

Ca, c'est le deuxième niveau. Le contexte donne accès à déjà plus d'informations et permet de valider les informations en interogeant (par exemple) la base de données.

class Bidule(models.Model):
    def clean_title(self):
        raise ValidationError('Title does not start with T')

Clean

class Bidule(models.Model):
    def clean(self):
        raise ValidationError('Title does not start with T')