오늘은 django REST framework에서 TextField에 들어있는 값을 리스트 형으로 바꾸는 방법을 포스팅해보겠다.
나는 현재 drf에서 기본으로 제공해주는 sqlite를 사용중인데, DB에 리스트형 값을 저장해주는 공식적인 방법이 없다.(있을수도 있음. 반박 환영합니다.)
그래서 꼼수(?)를 쓰는데, TextField로 리스트형을 str로 변환하고 그 값을 DB에 저장해준다.
(위 사진처럼 리스트형이 str 형태가 되어 저장된다.)
그렇다면, json으로 넘겨줄 때는 str값을 list형으로 넘겨주어야 할 것이다.
방법은 매우 간단하다. serializer.is_valid()
로 유효성 검사를 한 이후에, 데이터를 조작하여 넘겨주면 된다.
주의사항 : 변환방법은 야매로 한거라 drf의 규칙에 어긋날수도 있고 틀린 방법일 수도 있음. 하지만 누군가에겐 도움이 되지 않을까 하여 조심스레 올려본다..
s = serializer.data
s['order_quantity'] = eval(serializer.data['order_quantity'])
return Response(s, status=status.HTTP_200_OK)
유효성 검사 이후 데이터에 접근하기 때문에 data로 접근해야 하고, 응답할 때 조작한 데이터를 넘겨주면 된다.
생각보다 매우 간단하다. 하지만 정답이라고는 단정짓진 못하겠다ㅠ
아무튼 모든 (한줌)장고러들 화이팅!!!! 우리 모두 검색해도 나오지 않는 서러움을 이겨보아요...
유효성 검사를 하기 전에 필드에 접근할 수 있다.
serializer = serializer클래스(data=request.data)
seirlaizer.initial_data('필드') = 값
유효성 검사를 통과한 필드에 접근할 수 있다.
if serializer.is_valid():
serializer.validated_data['필드'] = 값
serializer.save()
유효성 검사를 통과하고 save된 필드에 접근할 수 있다.
if serializer.is_valid():
serializer.save()
serializer.data['필드']