학습주제
ModelSerializer
학습내용
지난시간에 배웠던 QuestionSerializer를 좀 더 간단한 형태로 구현해본다.
클래스의 상속을 Serializer -> ModelSerializer
로 바꾼다.
ModelSerializer
로 바꾸면 각 필드를 하나하나 정의해줄 필요가 없다. create, update 메소드도 만들어줄 필요가 없다.
class QuestionSerializer(serializers.ModelSerializer):
class Meta:
model = Question
fields = ['id', 'question_text', 'pub_date']
fields에 들어가지 않은 필드는 시리얼라이즈에서 제외됨.
상당히 간결해진 것을 알 수 있다. create, update 메소드도 자동으로 생성된다.
장고 쉘에서 클래스를 생성시킨 값을 보면,
특이하게 pub_date가 read_only 설정이 되어있다. 그 전에는 우리가 직접 수동으로 설정해줬었다. 이는 클래스가 pub_date 생성을 auto_now_add로 한걸 인식해서 자동으로 read_only를 걸어주었다.
.is_valid()
도 통과하고, serializer.save()
를 하면 정상적으로 저장된 것을 확인할 수 있다.