왜 분리하는가?
- 관계로 이루어진 nested serializer에서
GET 방식에서 보여줄 데이터의 형태와
POST 등에서 요청을 받을 데이터의 형태가 달라야한다.
from rest_framework.viewsets import ModelViewSet
class BaseViewsetMixin(ModelViewSet):
read_serializer_class = None
def get_serializer_class(self):
if self.request.method.lower() == "get":
return self.read_serializer_class
return self.serializer_class
class PostViewSet(BaseViewsetMixin):
queryset = post_models.Post.objects.prefetch_related......
serializer_class = post_ser.PostSerializer
read_serializer_class = get_ser.PostSerializer
permission_classes = [....]
...
..
.
POST 방식에서의 serializer에서 serializers의 Charfield 또는 ListField 등을 활용하고
GET방식에서의 serializer에서는 nessted serializer와to_representation ( 오버라이딩 )를 적극 활용한다.