Já fiz, refiz de tudo e as validações não estão acontecendo. Se coloco número no nome, ou se digito CPF e RG com apenas um dígito as mensagens não aparecem.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Já fiz, refiz de tudo e as validações não estão acontecendo. Se coloco número no nome, ou se digito CPF e RG com apenas um dígito as mensagens não aparecem.
Meu validators:
import re
def cpf_valido(numero_do_cpf): return len(numero_do_cpf) == 11
def nome_valido(nome): return nome.isalpha()
def rg_valido(numero_do_rg): return len(numero_do_rg) == 9
def celular_valido(numero_celular): """Verifica se o celular é válido (1191234-1234)""" modelo = '[0-9]{2} [0-9]{5}-[0-9]{4}' resposta = re.findall(modelo, numero_celular) return resposta
Meu serializer:
from rest_framework import serializers from clientes.models import Cliente from clientes.validators import *
class ClienteSerializer(serializers.ModelSerializer): class Meta: model = Cliente fields = 'all'
def validate(self, data):
if not cpf_valido(data['cpf']):
raise serializers.ValidationError({'cpf': "O CPF deve ter 11 dígitos."})
if not nome_valido(data['nome']):
raise serializers.ValidationError({'nome': "Não inclua números neste campo."})
if not rg_valido(data['rg']):
raise serializers.ValidationError({'rg': "O RG deve ter 9 dígitos."})
if celular_valido(data['celular']):
raise serializers.ValidationError({'celular': "O número do celular deve seguir este modelo: 99 99999-9999."})
return data
Oi Rogério, como vai?
Muito obrigado por compartilhar o seu código. Pode por gentileza realizar o seguinte teste:
fields. O seu não possui os 2 underline antes e depois, como mstra o exemplo abaixo:fields = '__all__'
Faz um teste e nos diz se deu certo?
Conte sempre com a Alura e bons estudos.
: )