Olá Lucas, como você está?
Peço desculpas pela demora em obter um retorno.
É exatamente isso, seu raciocínio foi excelente, o reconhecimento do campo a ser validado será feito através do nome usado para declaração de uma validação customizada.
Quando criamos validações customizadas para o serializer do REST framework, devemos seguir um padrão de sintaxe, para que nossa validação seja reconhecida.
Deixo abaixo a representação de como devemos realizar a declaração.
def validate_<nome_do_campo>(self, <valor_do_campo>):
# validação
Por padrão, o nome da validação customizada deve iniciar com validate_
seguido do nome do campo que será validado e como atributo receberá a instância (self
) e o valor registrado no campo informado (<valor_do_campo>
).
Para a estrutura da validação, devemos criar uma elevação de erro (raise) caso o valor não passe na validação desejada, devendo elevar a função serializers.ValidationError
. Caso o valor passe na validação, o valor do campo deve ser retornado.
def validate_cpf(self, cpf):
if len(cpf) != 11:
raise serializers.ValidationError("O cpf deve ter 11 digitos")
return cpf
Analisando o código utilizado na aula, temos todas as estruturas que são necessárias para a criação de uma validação customizada, onde demos:
- Declaração do campo que será validado e a coleta do valor do campo:
def validate_cpf(self, cpf):
- Validação do campo:
- Elevação de erro caso o valor não passe na validação:
raise serializers.ValidationError("O cpf deve ter 11 digitos")
- Retorno do valor do campo caso passe na validação:
Caso queira conhecer um pouco mais sobre as validações customizadas dos serializer, recomendo a leitura do seguinte artigo.
O conteúdo recomendado acima está em inglês, o uso da língua inglesa é bem comum na área de tecnologia, mas caso não tenha afinidade com essa linguagem, recomendo que utilize o tradutor do navegador para uma melhor compressão.
Qualquer dúvida fico à disposição.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!