Validações de campo personalizadas em modelos Django
Este artigo gira em torno de como adicionar validação personalizada a um campo específico. Por exemplo, para adicionar a validação de um e-mail a um CharField especificando um formato particular. Pode haver várias maneiras de obter validação personalizada. Neste artigo, vamos mostrá-lo a partir do próprio modelo para que você não precise manipulá-lo em outro lugar.
Essas Validações são executadas quando você tenta criar uma instância de um modelo. Tecnicamente, essa validação é implementada após a execução ModelName.objects.create(data = data)
.
Sintaxe -
field_name = models.Field (validadores = [função 1, função 2])
Explicação da validação do campo personalizado do Django
Ilustração de validadores usando um exemplo. Considere um projeto denominado geeksforgeeks
com um aplicativo denominado geeks
.
Consulte os artigos a seguir para verificar como criar um projeto e um aplicativo no Django.
Digite o seguinte código no models.py
arquivo do aplicativo geeks . Estaremos usando CharField para experimentar todas as opções de campo.
from
django.db
import
models
from
django.db.models
import
Model
class
GeeksModel(Model):
geeks_mail
=
models.CharField(
max_length
=
200
,
)
Agora vamos aplicar uma validação personalizada para que o campo acima seja validado apenas para IDs do Google Mail. Crie uma função que aceite um argumento denominado valor . Pode-se aplicar qualquer tipo de operação em valor agora. portanto, vamos verificar se o valor da nossa função contém @ gmail.com para ser validado apenas para IDs do google mail.
from
django.db
import
models
from
django.core.exceptions
import
ValidationError
def
validate_geeks_mail(value):
if
"@gmail.com"
in
value:
return
value
else
:
raise
ValidationError(
"This field accepts mail id of google only"
)
class
GeeksModel(models.Model):
geeks_mail
=
models.CharField(max_length
=
200
)
Agora vamos adicionar esta função como um validador em nosso campo. Observe que uma função de validador pode ser usada para vários campos simultaneamente.
from
django.db
import
models
from
django.core.exceptions
import
ValidationError
def
validate_geeks_mail(value):
if
"@gmail.com"
in
value:
return
value
else
:
raise
ValidationError(
"This field accepts mail id of google only"
)
class
GeeksModel(models.Model):
geeks_mail
=
models.CharField(
max_length
=
200
,
validators
=
[validate_geeks_mail]
)
Vamos tentar criar uma instância sem gmail.com e verificar se nossa validação funcionou ou não. Observe que, após cada alteração em models.py, é necessário executar makemigrations e migrar comandos.
Em seu navegador, vá para http: // localhost: 8000 / admin / geeks / geeksmodel / add / e digite “abc@geeksforgeeks.org”.
Vamos verificar se ele foi salvo no banco de dados.
Portanto, a validação funcionou e este campo só pode aceitar ids de e-mail terminando com @ gmail.com. Desta forma, pode-se aplicar qualquer tipo de validação personalizada no value
.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva