1
resposta

A função validate não funciona

Olá, eu tentei encontrar se alguém teve esse problema a função de validate não funciona mostrado na aula, eu estou usando o linux Ubuntu 22, instalei todas dependências pelo pip.FunçInsira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oii Agnaldo, tudo bem?

Pelo que eu percebi do código que você disponibilizou, a função validate se encontra dentro da sua Class Meta, quando deveria estar na mesma linha de endentação dela, e dentro da Class ClienteSerializer. O que você pode tentar fazer para resolver essa situação é tirar um espaço de endentação e tentar rodar o seu código novamente, como mostrado a seguir:

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 número do CPF é inválido!"})
        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 not celular_valido(data['celular']):
            raise serializers.ValidationError({'celular':"O número de celular deve ter 11 dígitos!"})
        return data   

Desse modo, a sua função deve passar a funcionar :) Outro ponto que eu percebi é que todas as suas funções prints apresentam o mesmo texto de "O CPF deve ter 11 dígitos!" e para você conseguir verificar melhor essa validação, recomendo que altere para algo que combine com a validação informada, como mostrado no código anterior.

Caso ainda não resolva o problema, peço que me mande seu projeto via github ou drive para que eu possa tentar te auxiliar mais assertivamente nessa questão. E em caso de dúvidas, me coloco à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!