Les trois niveaux de validation d'un modèle Django #14

Open
opened 2020-11-01 17:50:15 +01:00 by Fred · 0 comments
Owner
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')
--- Title: Valider des données sur un modèle Django Tags: 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: ```python 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. ```python class Bidule(models.Model): def clean_title(self): raise ValidationError('Title does not start with T') ``` ## Clean ```python class Bidule(models.Model): def clean(self): raise ValidationError('Title does not start with T') ```
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Fred/gwift-book#14
No description provided.