ModelSerializer가 아닌
class UserProfileSerializer(serializers.Serializer):
를 이용해서 작성중
members/serializers/userprofileserializers.py
이렇게 serializer를 사용했는데 다음 그림을 보면 user는 일대일 관계로 잡혀있어서 문서를 뒤져보니 PrimaryKeyRelatedField로 잡는 것 같아서 이런식으로 잡아 줬다.
PrimaryKeyRelatedField는 user instance를 받는 것이 아닌
user.id를 받았다. 관계된 모델의 primarykey를 이용해서 serializer하는 것 같다
그리고 phonenumberField는 serializer에 따로 가지고 있지 않아서
from phonenumber_field.validators import validate_international_phonenumber
를 import 한 후,
serializer.CharField안에 함수를 받아 검수하는 validators안에 validate_international_phonenumber 이 함수를 넣어줬다.
input 으로는 "phone_number" : "+8201012345678"
이런식으로 country 정보 와 함께 넣어줘야 한다.
밑에서 더 자세히 보여주겠다 postman을 통해
members/models.py
model에 보면 user는 OneToOneField로 잡혀 있다.
class UserProfileListCreateAPIView(APIView):
# 유저 전체 보여주기
def get(self, request, format=None):
users_profile = UserProfile.objects.all()
serializer = UserProfileSerializer(users_profile, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
def post(self, request, format=None):
data = request.data
data['user'] = User.objects.get(email=data['email']).id
print("data: ", data)
이런식으로 user email을 통해 user : user.id 를 JSONtype에 추가해서 data에 넣어줬다.
느낀점