일단 모델을 JSON으로 쉽게 바꿔주는건 ModelSerializer를 사용한다.
하지만 모델에 없는 필드인데 JSON에 특정 필드를 추가해서 내려주고 싶거나, 변경해서 내려주고 싶다면? (예를 들면 user모델의 pk값을 받아오는데 pk값으로 출력하지 않고 email 값으로 출력하고 싶다.)
이럴때 사용하는게 SerializerMethodField 이다!
class ArticleListSerializer(serializers.ModelSerializer):
user = serializers.SerializerMethodField()
def get_user(self, obj): # 자동으로 연결
return obj.user.email # 이제 user는 user.email 값이 되었음.
기본적인 사용방법은 이렇다. 코드를 전부 올릴수는 없어서 자세한 사용방법은 설명하지 못하지만.
해당 코드를 입력 안하고 Article 모델에서 ForeignKey 로 받아온 user는 그냥 pk 값으로 표시가 되어버린다.
하지만 해당 코드와 같이 SerializerMethodField 처리를 해주고, 아래 get_user 함수로 처리해준다.
저 def get_user 는 SerializerMethodField() 안에 method_name을 지정을 안해주었을때 저렇게 쓰는거고
만약에
user = serializers.SerializerMethodField(method_name='email')
이렇게 method_name을 지정해 준다면
def email (self, obj):
return obj.user.email # 이제 user는 user.email 값이 되었음.
이렇게 변경할 수 있다.
'TTL > 9주차 ~ 12주차 TIL (10.24 ~ 11.18)' 카테고리의 다른 글
| 2022-11-03 TIL (dj-rest-auth) (0) | 2022.11.04 |
|---|---|
| 2022-11-01 TIL (백엔드와 프레임워크 공부) (0) | 2022.11.02 |
| 2022-10-28 TIL (django ImageField) (0) | 2022.10.30 |
| 2022-10-27 TIL (0) | 2022.10.28 |
| 2022-10-26 TIL (로그인 인증의 종류, JWT 알아보기) (0) | 2022.10.27 |