• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

PostCommentListAPIView(게시물 댓글 조회 api) 관련 질문

22.08.18 10:04 작성 조회수 111

0

https://www.inflearn.com/questions/626618

해당 질문을 올렸던 수강생입니다!

  1. PostCommentListAPIView는 각 게시물에 달린 댓글의 list를 조회하고자 합니다. 
    이에 대해 어떻게 코드를 구현하면 좋을 지 여쭤보고 싶습니다! 
  2. CommentDeleteAPIView는 게시물의 댓글을 삭제하는 api인데, 이것 또한 위 코드로 작성했을 경우 제대로 댓글이 삭제되지 않아 조언을 구하고 싶습니다.

    위 질문들에서 2번은 해결하였고, 1번 관련 코드를 작성하던 중 몇몇 에러가 발생하여 질문드립니다.

위 코드를 실행하면 

MultipleObjectsReturned

get() returned more than one Comment -- it returned 2!

3번 포스트에 댓글이 2개 존재하는 상황에서 이러한 에러가 떠서, 애초에 시도했었던 

get_queryset을 다시 사용하려고 했지만

다음과 같이 작성하면 

Field 'id' expected a number but got <doeco_app.views.PostCommentListAPIView object at 0x00000233D4818BB0>.

해당 에러가 발생하는 상황입니다.
int 값으로 형변환이 필요한 상황이라고 생각하여 형변환도 시도해보았지만
여전히 같은 에러가 발생하여 조언을 구하고 싶습니다!

답변 1

답변을 작성해보세요.

0

안녕하세요. 독자님.

1. 부모 지네릭뷰인 ListAPIView 로직을 보면,

get_queryset() 메소드는 대상 QuerySet 을 만들어 리턴해 주는 역할을 합니다.

그 이후에 Serializer 처리 및 응답 처리는 변경할 게 없구요.

그래서 아래 처럼 get_queryset() 메소드만 오버라이딩해주면 됩니다.

class PostCommentListAPIView(ListAPIView):
    serializer_class = CommentSerializer

    def get_queryset(self):
        postId = self.kwargs.get('pk')
        qs = Comment.objects.filter(post=postId)
        return qs

시도해보고 안되면 다시 질문해 주세요.