ModelViewSet Serializer 분리

GisangLee·2022년 8월 24일
0

my_module

목록 보기
30/33
post-custom-banner

1. Serializer GET, POST 분리

왜 분리하는가?

  • 관계로 이루어진 nested serializer에서
    GET 방식에서 보여줄 데이터의 형태와
    POST 등에서 요청을 받을 데이터의 형태가 달라야한다.

어떻게?

  1. Mixin 만들기
  2. Mixin을 ModelViewset에 상속

2. Mixin

BaseViewSetMixin

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 ( 오버라이딩 )를 적극 활용한다.

profile
포폴 및 이력서 : https://gisanglee.github.io/web-porfolio/
post-custom-banner

0개의 댓글