작성
·
225
0
instagram /serializers.py 에서
AuthorSerializer 클래스의 avatar_url_field 메서드는
두번째 인자로 author 를 받아서 처리해주고 있는데
AuthorSerializer 내부에서 author를 정의해준 부분이 없는데
어떻게 author를 인자로 받을 수 있는걸까요?
마찬가지로 PostSerializer 클래스의 is_like_field 메서드의 두번째 인자인 post도 어떻게 받아 처리하는 건지 궁금합니다.
답변 2
1
0
안녕하세요.
AuthorSerializer는 User 모델에 대한 모델시리얼라이저입니다.
그리고 ModelSerializer에서 SerializerMethodField를 선언하게 되고, 첫번째 인자로 호출할 메서드명을 지정해줬습니다. 그러니 avatar_url 필드에 대한 값을 구할 때, 메서드명으로 지정한 avatar_url_field 가 호출됩니다. 인자로 메서드명을 지정하지 않으면 디폴트로 get_avatar_url 을 찾아서 호출합니다.
SerializerMethodField에 대한 메서드를 호출할 때에는 인자로 모델 인스턴스를 넘겨줍니다. 현재 AuthorSerializer는 User 모델에 대한 모델시리얼라이저이니까 User 인스턴스가 넘어올 테구요. 저는 인자로 받는 이름을 user가 아니라 author로 받은 상황입니다. :-)
PostSerializer의 is_like 필드도 위에서 설명드린 것과 같습니다.
살펴보시고 댓글 부탁드립니다.
화이팅입니다. :-)