[DRF] SerializerMethodField로 모델에서 변형된 JSON을 내려주기
[DRF] 모델과 ModelSerializer 만들기 에서
모델을 JSON으로 쉽게 바꿀 수 있도록 해주는 ModelSerializer를 알아봤는데요,

만약
- 모델에 없는 필드인데 JSON에 특정 필드를 추가해서 내려주고 싶거나
- 모델에 있는 값을 변경해서 JSON으로 내려주고 싶거나 (예를 들어 모델에는 fullName 필드가 있는데 JSON은 firtsName으로 내려주고 싶다던가)
할때는 어떻게 해야할까요?!
SerializerMethodField 를 사용하면 됩니다.
이 필드에는 method_name을 지정해줄 수 있는데요, 안지정해주면 get_필드네임 메소드를 부른다라고 적혀있네요

예를들어 이렇게 생긴 Profile 모델이 있다고 할때

JSON으로 nickname 필드를 내려주고 test라는 필드도 따로 추가해서 내려주고 싶다고 해볼게요-!!
그럼 이렇게 Serializer를 만들어주면 됩니다.

또는 메소드 네임을 지정해줘도 됩니다.

그리고 APIView에서 이 serializer를 쓰게 해줄게요

저 API를 요청해보면 우리가 원하는 JSON으로 잘 나오는 것을 볼 수 있습니다 👏

실전 예제
이건 제가 SerailzierMethodFileds를 몰랐을때 만들어줬던 API View들 입니다.
이 코드를 다른 APIView에도 복붙해주면서 마음이 너무 안좋았어요,,,,,,
return Response({"token": token.key, "id": profile.user.id, "nickname": profile.nickname, "family_code": profile.family.code if profile.family is not None else None, "temporary_family_code": profile.temporary_family_code.code if profile.temporary_family_code is not None else None})
근데 이제 SerailzierMethodFileds를 알게 되어서 이렇게 Serailzier를 만들고 나니까!!!
뷰 코드가 깔끔해졌습니다 (감동,,)