앞서 댓글 작성을 할때 Viewset을 활용했기 때문에 get이 가능하지만
model를 comment로 설정했기 때문에 게시글에 달린 댓글식이 아닌 전체 댓글 순서로 나오게 됩니다.
그래서 이번 글에서는 해당 게시글에 달린 댓글만 보여질 수 있도록 api를 추가해보겠습니다.
여러 방법이 있겠지만 여기서 저는 Fit-ple 개발때 사용했던
model은 동일하게 사용하고 serializer를 해당 기능에 맞춰서 새로 만들어주는 방식으로 설명하겠습니다.
댓글 view serializer 만들기
boards/serializers.py에 아래 내용을 추가합니다.
class BoardOnlySerializer(serializers.ModelSerializer):
parent_comments = serializers.SerializerMethodField()
class Meta:
model = Board
fields = ('id', 'parent_comments')
def get_parent_comments(self, obj):
parent_comments = obj.comments.filter(parent=None)
serializer = CommentSerializer(parent_comments, many=True)
return serializer.data
댓글 view의 view 만들기
boards/views.py에 아래 내용을 추가합니다.
from .serializers import BoardOnlySerializer
class CommentOnlyViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Board.objects.all()
serializer_class = BoardOnlySerializer
permission_classes = [permissions.AllowAny]
댓글 urls 연결
router.register(r'view/comment', views.CommentOnlyViewSet)
http://localhost:8000/boards/view/comment/:id/
view 테스트 이기 때문에 get 방식으로 아래 이미지처럼 테스트 하면 됩니다.
해당 시리즈에서 작업한 코드는 github에 업로드가 되어 있습니다.
부족한 점이나 잘못된 점이 있으면 댓글에 적어주시면 감사하겠습니다.