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