2023-05-10 TIL

0v0baek·2023년 5월 10일
0

TIL

목록 보기
48/92

[drf] db의 값을 갯수로 보고싶을 때

models.py에서 likes
ManyToManyField로 구성해서 모델을 받아온 뒤
db에 구성된 값들을 불러올 때,

id로 불러와지는 문제를 해결하기 위해
StringRelatedField(many=True)를 사용한다.

class ArticleDetailSerializer(serializers.ModelSerializer):
    likes = serializers.StringRelatedField(many=True) 

이런식으로.

만약, 좋아요 한 유저 목록이 아니라
좋아요 한 숫자를 카운팅해서 데이터를 넘겨주고 싶다면
어떻게 해야할까?

class ArticleDetailSerializer(serializers.ModelSerializer):
    likes_num = serializers.SerializerMethodField()
    
    # 현재 게시글의 좋아요 갯수 들고오기
    def get_likes_num(self, obj):
        return obj.likes.count()

SerializerMethodField를 사용해서 데이터를 들고온 뒤,
get_likes_num 함수에서 개체의 countreturn할 수 있게 해주면 된다!

참고로 id값이 아닌 이메일 이름으로 보려면 이렇게 하면 된다.

class ArticleDetailSerializer(serializers.ModelSerializer):
    likes_email = serializers.SerializerMethodField()
    
    def get_likes_email(self, obj):
        return obj.likes.email()

이런식으로 값을 들고오면 됨!

profile
개발 공부 하는 비전공자 새내기. 꾸준히 합시다!

0개의 댓글