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"
]