내일배움캠프 55일차

김서영·2022년 11월 20일
0

내일배움캠프 TIL

목록 보기
57/85
post-custom-banner

1. 오늘 내가 한 일!

  • 타임어택 : 오늘은 도커 타임어택을 진행하였는데 탈탈 털렸다..😱😱 아직 방금을 잘 모르는 것 같다ㅠㅠ다음 프로젝트 진행하면서 배포연습 해봐야겠다.

  • 텔레토비 팀 타임어택 : 팀끼리 진행하는 타임어택도 진행하였다!!오늘은 게시글 수정 및 삭제, 댓글 보이기&수정&삭제 등에 대해서 진행하였다! 프로젝트 시작 전에 이렇게 복습을 하니 기억도 더 잘 나고 좋은 것 같다😍

2. 문무해알

1. 값을 다르게 가져오는 법

- 문제점

- 무엇을 몰랐는지(내가 한 시도)

email을 로그인 아이디로 사용하고, like한 유저는 username으로 나오게 싶었는데 이것저것 바꿔보다 안바뀌어서 결국 튜터님께 질문을 했다.

- 해결 방법

class ArticleSerializer(serializers.ModelSerializer):
    user = serializers.SerializerMethodField()
    comment_set = CommentSerializer(many=True)
    like = serializers.SerializerMethodField()

    def get_user(self, obj):
        return obj.user.username

    def get_like(self, obj):
        return list(obj.like.values_list('username',flat=True))

    class Meta:
        model = Article
        fields = '__all__'

- 알게 된 것

시리얼라이즈를 사용할 때 serializermethodField 함수를 이용해서 원하는 값을 불러올 수가 있는데 만약 가져오고 싶은 값이 외래키로 연관이 되어있거나 그 형태가 제이쿼리라면 아래 식처럼 불러올 수 있다.

list(obj.like.values_list('username',flat=True))

여기에서
values_list => 내가 원하는 것을 가져오겠다.
flat=True => 데이터를 가져오는 형식을 정해주는 것(이것 사용하지 않으면 이상한 형식으로 보인다!!)

2. serializermethodField

- 문제점

- 무엇을 몰랐는지(내가 한 시도)

serializdermethodField가 어떤 역할을 했었는지 잘 기억이 나지 않아 다시 공부하고 정리하려고 한다!

- 해결 방법

- 알게 된 것

시리얼라이저로 객체를 직렬화한 JSON에

  1. 모델에 없는 필드를 추가

  2. 모델에 있는 값을 변형해서 새로운 필드의 값으로 넣기

를 하고싶을 때 SerializerMethodField 를 사용하면 된다!!

profile
개발과 지식의 성장을 즐기는 개발자
post-custom-banner

0개의 댓글