Django: Model.field custom validator
8 Novembre 2016
Ho un model Season, con un field ‘name’.
Voglio che siano accettati solo nomi con il formato
‘yyyy-yyyy’ es. ‘2016-2017’.
Per essere sicuro che, in sede di creazione da interfaccia
di Admin, venga rispettato questo criterio, posso creare un
validator.
Nella stessa directory dove risiedono i models, creo un file
validators.py con all’interno il mio custom validator.
from django.core.exceptions import ValidationError import re def validate_season_name(name): pattern = '^\d{4}-\d{4}$' if not re.compile(pattern).match(name): raise ValidationError('name %s is not correct: yyyy-yyyy is mandatory'\ % name, params={'name': name},)
Nel file models.py userò il validator direttamente
nella definizione del field ‘name’:
# noinspection PyUnresolvedReferences from django.db import models from myapp.validators import validate_season_name class Season(models.Model): name = models.CharField(max_length=9, validators=[validate_season_name]) def __unicode__(self): return self.name
Ovviamente, essendo l’argomento validators una lista, posso utilizzare più validators.
Quando andrò a creare la Season ed inserirò
un nome non desiderat, verrà sollevata l’eccezione.
Commenti recenti