Backend/Django

[Django] DRF - Serializer안의 함수에서 request user 사용

Sungwoo Koo 2022. 7. 2. 22:12
Serializer안에서 request.user을 사용하는 방법을 기록하기 위해 작성

 

Response를 보낼 때 context 안에 request를 담아서 보내면 된다.

 

아래는 예시이다.

<views.py>
    def get(self, request):
        return Response(UserSerializer(request.user,
                                       context=request # context에 request담아서 Serializer에 전송
                                       ).data)

<serializers.py>
class HobbySerializer(serializers.ModelSerializer):
    same_hobby_users = serializers.SerializerMethodField()

    def get_same_hobby_users(self, obj):
        user = self.context.user # context에서 user 호출
        user_list = []
        for user_profile in obj.userprofile_set.exclude(user=user):
            user_list.append(user_profile.user.username)
        return user_list

    class Meta:
        model = HobbyModel
        fields = [
            "name",
            "same_hobby_users"
        ]