Django 2 – Rest Framework: Relação um para Muitos (1:N)

Logotipo Python

Como fazer, em sua API, para exibir os dados de algum relacionamento? Essa é a pergunta que me fiz há um tempo atrás. Imagine que você tenha uma API que retorne Ordens de Serviço (ORDENS) e que essas ORDENS possuem vários apontamentos de hora, que chamaremos de LOG. Como fazer para que, em cada Ordem, sejam retornados todos os Logs?

O que queremos, é exibir algo assim:

A imagem mostra um Objeto JSON retornando os dados de log dentro dos dados da Ordem

PRIMEIRO PASSO: MODELS

SEGUNDO PASSO: SERIALIZERS

Você deverá criar agora dois Serializers em um arquivo chamado serializers.py.

O segredo está na classe MaintenanceOrderSerializer, na variável order_log. Nessa variável, setamos o MaintenanceLogSerializer e setamos que a fonte dele é uma chave estrangeira.

Nesse timo de relacionamento (1 x N), temos que especificar todos os campos que queremos exibir. Não podemos setar ‘__all__’.

TERCEIRO PASSO: VIEW

QUARTO PASSO: URL (rotas)

Agora basta criar sua rota. Veja um exemplo:

RESULTADO

O resultado deverá ser algo como:

Espero que tenha ajudado como fui ajudado.

Mais detalhes podem ser vistos nessa dúvida que havia lançado no StackOverflow.

https://stackoverflow.com/questions/52447984/django-rest-framework-one-to-many-relationship-not-working/52449174#52449174

Seus comentários são muito apreciados.

This site uses Akismet to reduce spam. Learn how your comment data is processed.