티스토리 뷰

🐍/DRF

[DRF] 모델과 ModelSerializer 만들기

사용자 eungding 2020. 9. 10. 22:46
728x90
반응형

[1] ModelSerializer 개념 

django rest framework의 ModelSerializer 에 대해 먼저 알아보겠습니다.

ModelSerializer은 모델을 JSON으로 쉽게 바꿀 수 있도록 해주는 것입니다. 

 

예를 들어 Account라는 모델이 있다고 할때 (문서에 모델 선언해둔 것은 없네요ㅠㅠ)

AccountSerializer를 만들어서 

내가 원하는 모델의 필드들만 json으로 만들어줄 수 있어요 

 

 

모델의 모든 필드를 다 json으로 만들어줄 거라면  __all__ 을 해줄 수 도 있고 

 

 

특정 필드만 제외하고 싶다면 exclude 해줄 수 도 있답니다. 

 

 

그리고 nested json을 만들고 싶으면 depth 옵션을 사용할 수도 있습니다. 

 

 

(장고 튜토리얼과 다르게 장고 rest framework 문서는 불친절해서 depth에 대한 다양한 예제나 상세한 설명은 없고 위의 예제가 끝이네요,,,)

 

[2] 모델 만들기 

 

question 앱의 models.py에 들어가서 

모델을 하나 만들어줍니다.

 

 

참고로 장고는 모델에 primary key인 필드를 명시하지 않으면 

primary key인 id라는 필드를 자동으로 만들어줍니다. 
 

 

[3] 모델 Serializer 만들기 

 

그 다음 question앱에 serializers.py 라는 파일을 만들어주세요 

그리고 Question모델에 대한 Serializer를 만들어줍니다. 

 

Question모델의 모든 필드를 json으로 만들겠습니다. (이렇게 하면 위에서 말한 id도 같이 json에 나옵니다)

 

 

[4] 파이썬 쉘에서 JSON 출력해보기 

 

일단 파이썬 쉘을 실행시켜주세요

 

 python manage.py shell

 

쉘에 아까 만든 시리얼라이저랑 모델을 import 해줍니다. 

from question.serializers import QuestionSerializer
from question.models import Question

 

이렇게 serializer를 만들고 data를 출력해보면..!! 

question = Question(title="안녕하세요 질문입니다")
serializer = QuestionSerializer(question)
serializer.data

 

json이 잘 출력되는 것을 볼 수 있습니다. 

 

 

(모델이 DB에 저장이 안되어서 id가 None으로 나오는 것 같아요)

 

control+D 또는 quit()을 입력해서 파이썬 쉘을 종료합니다. 

 

 

[추가] - id를 안나오게 해주려면

만약 id가 나오는 게 싫다면 두가지 방법 중 하나로 해줄 수 있겠습니다.

 

 

 

 

 

[추가] - 리스트 형태의 json을 내려주고 싶다면

 

https://eunjin3786.tistory.com/237?category=891871

 

728x90
반응형
댓글
댓글쓰기 폼