Carregar dados relacionados

21 views
Skip to first unread message

Laryssa Gomes

unread,
Feb 3, 2022, 2:37:43 PM2/3/22
to Django Brasil
Estou tendo dificuldade de fazer o carregamento de dados relacionados com o django 4
Esse e meu model.
class Artigo(models.Model):
processo = models.CharField(max_length=500)
assunto = models.TextField()
responsavel = models.CharField(max_length=500)
relator = models.CharField(max_length=500)
interesado = models.CharField(max_length=500)
dispositivo = models.TextField()
nome = models.CharField(max_length=500)

class Palavra(models.Model):
fkrtigoId = models.ForeignKey(Artigo, on_delete=models.CASCADE, null=True, related_name='artigoPalavra')
palavra = models.CharField(max_length=600)

e eu queria exibir a palavra e o artigo relacionando juntos em um objeto porém so consegui isso
[
  {
    "id": 71,
    "palavras": "impugnação,aneel,desligamento,decisão,energia,",
    "fkartigoId": 53
  }
]
minha views.
@api_view(['GET'])
def lista_artigos_palavras(request):
palavra = Palavra.objects.select_related('fkartigoId')
serializer = PalavraSerializer(palavra, many=True)
return Response(serializer.data)
agradeço desde já qualquer auxilio nisso

Flávyo Henrique

unread,
Feb 3, 2022, 2:54:53 PM2/3/22
to django...@googlegroups.com, Laryssa Gomes

Larissa, você está usando Django Rest Framework, correto?

Você pode resolver isso de várias maneiras, entre elas eu destaco criar um método, sobrescrever o método to_representation do serializer ou criar um serializador do relacionamento, da uma olhada na documentação (Serializer fields - Django REST framework (django-rest-framework.org), tem vários tipos de field, escolha um que te atenda e use o parametro source do field que irá te ajudar dependo da necessidade. Não se esqueça de tomar cuidado com o queryset que irá ser gerado, dependendo do uso do endpoint você pode matar o seu banco de dados e fazer a sua aplicação se tornar uma lesma.

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/django-brasil/0141baf2-d773-4256-8a98-52e03726678bn%40googlegroups.com.

Laryssa Gomes

unread,
Feb 3, 2022, 3:40:12 PM2/3/22
to Django Brasil
valeu

Lucas Brahm

unread,
Feb 6, 2022, 11:20:38 PM2/6/22
to django...@googlegroups.com
A questão é que o artigo está aparecendo só o id dele e você gostaria que mostrasse o objeto?

Poderia fazer algo do tipo:

class ArtigoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Artigo
        fields = ('id', 'processo', 'assunto', 'responsavel', 'relator', 'interesado', 'dispositivo', 'nome')


class PalavraSerializer(serializers.ModelSerializer):
    fkrtigoId = ArtigoSerializer()

    class Meta:
        model = Palavra
        fields = ('id', 'fkrtigoId', 'palavra')

Reply all
Reply to author
Forward
0 new messages