PostCommentListAPIView(게시물 댓글 조회 api) 관련 질문
https://www.inflearn.com/questions/626618
해당 질문을 올렸던 수강생입니다!
- PostCommentListAPIView는 각 게시물에 달린 댓글의 list를 조회하고자 합니다.
이에 대해 어떻게 코드를 구현하면 좋을 지 여쭤보고 싶습니다! - 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
시도해보고 안되면 다시 질문해 주세요.
블로그 첫 화면이 안 나옵니다.
0
317
3
INSTALLED_APPS 순서
0
246
1
vscode 실행안됨
0
667
3
django venv activate 하고 나서 vue 서버도 실행 해야 하나요?
0
367
2
더 공부할게있을까요
0
369
1
용어에 대해 문의 드립니다.
0
283
2
like 기능을 위한 overriding 문의
0
322
1
코드 최적화 과정
0
363
1
유저 1명이 1개의 게시글에 좋아요를 누를 경우
0
356
1
프로잭트를 생성하고 runserver하면 ModuleNotFoundError: No module named 발생해요
0
894
4
GET Method 에서 왜 Like 수를 증가시키는지 궁금합니다.
0
376
1
CSRF Token에 대한 질문입니다.
0
609
1
ModuleNotFoundError: No module named 'rest_framework django' 오류
0
3037
1
앱을 구성할 때 api 앱과 blog 앱을 나누어서 구성하는 이유가 궁금합니다ㅜ
1
472
2
to_representation() 오버라이딩 질문입니다.
0
496
3
공부 순서에 관해 질문드립니다.
0
360
1
CateTagAPIView에서 get 메소드
1
309
2
깃헙 페이지를 보고싶어요
0
230
1
디버거 관련 질문입니다.
0
277
3
가장 마지막강의 (Generic View -> ViewSet migration) 질문입니다.
0
223
1
댓글 보기 및 삭제 api
0
279
1
post, comment crud 질문
0
228
4
CateTagSerializer 질문입니다!
3
336
3
The serializer field might be named incorrectly and not match any attribute or key on the `User` instance.
0
839
1

