E aí, Renato! Tudo certo?
Vamos lá, dei uma olhada no teu código e percebi alguns pontos que podem estar dando problema.
Importando Módulos: Tá faltando importar o módulo re
pra usar expressões regulares no teu código. Faltou colocar um import re
lá no começo.
Método validadores
: Tá ligado que a função validadores
tá dentro do serializer, né? Normalmente, essa lógica costuma ficar no método validate
do serializer. Então, o que você pode fazer é renomear esse método validadores
para validate
e tirar o self
dele, porque ele vai receber os dados que você tá tentando validar.
Ficaria algo mais ou menos assim:
import re # Não esquece de importar isso!
from validate_docbr import CPF
def cpf_valido(numero_do_cpf):
cpf = CPF()
return cpf.validate(numero_do_cpf)
def celular_valido(celular):
padrao = '[0-9]{2} [0-9]{5}-[0-9]{4}'
resposta = re.findall(padrao, celular)
return resposta
class ClientesSerializer(serializers.ModelSerializer):
class Meta:
model = Clientes
fields = '__all__'
def validate(self, data): # Mudança aqui!
if not cpf_valido(data['cpf']):
raise serializers.ValidationError({'cpf': "CPF deve ter 11 digitos"})
if not celular_valido(data['celular']):
raise serializers.ValidationError({'celular': "Número ou formato de celular invalido"})
return data # Não esquece de retornar os dados validados!
Espero que isso ajude a resolver teu problema!