1
resposta

[Solução] Aviso KeyError: 'pk'

Olá, Mesmo após inserir os comentários como descritos na aula o aviso ainda é exibido, buscando uma alternativa achei uma issue no github: https://github.com/axnsan12/drf-yasg/issues/333

Nela explica como utilizar getattr() assim como no aviso é exibido ...raised exception during schema generation; use getattr(self, 'swagger_fake_view', False)...

Ficando da seguinte maneira:

class ListaMatriculasEstudante(generics.ListAPIView):
    """
    Descrição:
    - Lista todas as matrículas por id do estudante
    ---
    Parâmetros:
    - pk (int): id do estudante
    """
    def get_queryset(self):
        if getattr(self, 'swagger_fake_view', False):
            return Matricula.objects.none()
        queryset = Matricula.objects.filter(estudante_id=self.kwargs['pk']).order_by('id')
        return queryset
    
    serializer_class = ListaMatriculasEstudanteSerializer

class ListaMatriculasCurso(generics.ListAPIView):
    """
    Descrição:
    - Lista todas as matrículas por id do curso
    ---
    Parâmetros:
    - pk (int): id do curso
    """
    def get_queryset(self):
        if getattr(self, 'swagger_fake_view', False):
            return Matricula.objects.none()
        queryset = Matricula.objects.filter(curso_id=self.kwargs['pk']).order_by('id')
        return queryset

    serializer_class = ListaMatriculasCursoSerializer

Após isso o aviso não é mais exibido, pelo que entendi é uma forma retornar dado vazio none() quando não é passado argumento para o Swagger evitando o aviso.

1 resposta

Oi, Noé! Como vai?

Obrigada por compartilhar sua solução com a comunidade Alura.

Ótima abordagem ao encontrar a solução no GitHub! Com certeza vai ajudar outras pessoas aqui no fórum.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!