django-react 출석부 프로젝트

dooh kim·2020년 5월 16일
0

Serializer 사용

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에 넣어줬다.

느낀점

  • serializer.Serializer 굳이 쓰려니까 힘들다
    (그래도 기본을 알고 넘어가려고 하자)
  • phonenumber Field serializer할 때 validator 한번써봤다.
    (다음에는 직접 함수 작성해서 검수해봐야지)
profile
testify to the light

0개의 댓글