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.
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!
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.
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!