티스토리 뷰

반응형

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

 

 

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를 만들고 나니까!!! 

 

 

뷰 코드가 깔끔해졌습니다 (감동,,)

 

 

반응형
댓글