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.
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.
: )