3
respostas

[Dúvida] Porque utilizar o Serializer e não JsonResponse [Refazendo o questionamento do colega, pois tenho a mesma dúvida]

Ola tudo bem? Gostaria de saber porque nos cursos usamos os serializadores e não simplesmente um JsonResponse pegando os dados da Model, passando pela view e entregando nas rotas?

Uma outra duvida que tenho envolvendo os serializadores.. Caso eu queria uma consulta customizada,(join, group by e etc) essa consulta deve ser feita nos serializadores ou na view, ou ainda deixar um método pronto na model que faça essa consulta?

Desde já agradeço

3 respostas

Opa, Eric! Tudo bem?

A utilização de serializers em vez de simplesmente retornar um JsonResponse tem algumas vantagens. O Serializer é responsável por converter os dados do modelo, que podem ser complexos, em um formato que possa ser facilmente consumido pela API, como JSON. Além disso, ele também permite a validação dos dados antes de serem salvos no banco de dados.

Por exemplo, suponha que você tenha um modelo com um campo obrigatório. Se você utilizar apenas um JsonResponse, não será possível garantir que esse campo seja preenchido corretamente antes de salvar os dados. Já com o Serializer, você pode definir regras de validação para garantir que os dados estejam corretos antes de serem salvos.

Para mais informações acessa a documentação oficial: Django Rest Framework - Serializers

Quanto à sua segunda dúvida, sobre consultas customizadas, é geralmente recomendado realizar essas consultas na view. O Serializer é responsável por serializar os dados do modelo, ou seja, transformá-los em um formato adequado para a API. Portanto, a consulta em si, como um join ou um group by, deve ser feita na view. O Serializer pode ser utilizado para serializar os resultados dessa consulta, se necessário.

No entanto, em alguns casos, pode ser mais conveniente criar um método personalizado no modelo que faça essa consulta. Por exemplo, se você precisa realizar a mesma consulta em diferentes views, pode ser mais prático ter um método na model que já faça essa consulta e retorne os resultados prontos para serem serializados.

Espero ter esclarecido suas dúvidas! Se tiver mais alguma pergunta, estarei à disposição.

Grande abraço e bons estudos!

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

Olá, Armando. Obrigado pela sua resposta. Quanto ao uso das views para fazer os joins, tem algum curso ou material que aborde esse tema que você possa recomendar?

Fala, Erick! Como vai?

Acerca de material não se tem muito na internet trabalhando sobre esse tema para o ambiente do Django, mas, estarei indicando um artigo que li há um tempo e gostei. Porém, ele não está aplicado no mesmo contexto desse curso, terá que abstrair um pouco do conceito passado.

Caso a língua do artigo seja um impedimento, clique com o botão direito do mouse e selecione a opção de traduzir para português.

Outra indicação é a própria documentação oficial:

Espero ter ajudado e caso tenha mais alguma dúvida, basta avisar!