최용우
장고 ReadOnlyField의 쓰임 본문
클라이언트에서 받은 Json을 저장하고 싶다. 그러나 Json에는 해당 유저에 대한 정보는 없는 상황.
토큰을 활용하여 해당 유저에 대한 정보를 파악한 후 DB에 저장하고 싶을때 어떻게 해야하나.
내가 직면한 상황이다.
분명히 models.py에는 user에 대한 칼럼을 생성해 놓은 상황이지만
클라이언트에서 보내는 json에는 user에 대한 정보가 없다.
이럴 땐 serializer.py에 user 정보를 ReadOnlyField로 지정한다
username = serializers.ReadOnlyField(source='username.username')
그리고 views.py에 perform_create 함수를 오버라이딩 한다.(generic 클래스 뷰 사용시)
def perform_create(self, serializer):
serializer.save(username=self.request.user)
이렇게 해야하는 이유는 serializer가 db에 저장되기 전 is_valid()를 통해 유효성 검사를 하게 되는데
ReadOnly를 안걸어 놓으면 해당 field를 json으로 넘겨달라는 오류를 뱉어낸다.
위 오류를 회피하고 user 정보를 저장하기 위해 위와 같은 방법을 사용한다.
'장고' 카테고리의 다른 글
| 장고 Serializer의 partial 활용하기 (0) | 2022.05.16 |
|---|---|
| 파이썬 정규식 비캡처링 그룹 '?:' (1) | 2022.03.06 |
| 장고 테스트 케이스 사용법 (0) | 2022.02.14 |
| Django 시리얼라이저, ReadOnlyField (1) | 2022.02.13 |
| 하나의 서버에서 2개 이상 django 프로젝트 배포하기 (2) | 2022.02.12 |