Notice
Recent Posts
Recent Comments
Link
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Tags more
Archives
Today
Total
관리 메뉴

최용우

장고 ReadOnlyField의 쓰임 본문

장고

장고 ReadOnlyField의 쓰임

용우쨩 2022. 2. 26. 18:55

클라이언트에서 받은 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 정보를 저장하기 위해 위와 같은 방법을 사용한다.