Serializer
serializer는 queryset과 model instance 같은것을 쉽게 Json , Xml 또는 기타 데이터 형태로 쉽게 렌더링 할수 있게 해준다. 또한 serializers 는 deserialization을 제공하므로 들어오는 데이터의 유효성을 먼저 확인한 후에 다시 데이터를 복합 형식으로 다시 변환 할 수 있게 한다.
여기서는 ModelSerializer를 알아볼 것 이다.
ModelSerializer
종종 Django 모델 정의와 밀접하게 매핑되는 serializer 클래스가 필요할 것이다.
이 ModelSerializer
클래스는 Serializer
모델 필드에 해당하는 필드가 있는 클래스 를 자동으로 만들 수있는 바로 가기를 제공 한다.
model.py
from django.db import models
from django.contrib.auth.models import Userclass Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
author = models.ForeignKey(User,on_delete=models.CASCADE)
fields 를 사용하여 포함하는 필드를 나열 할 수 있다.'__all__'
으로 설정 하여 모델의 모든 필드를 사용해야 함을 나타낼 수 있다.
from rest_framework import serializers
from . import models
class BlogSerializer(serializers.ModelSerializer) :
class Meta :
model = models.Post # post 모델 사용
fields = '__all__' # 모든 필드 포함
exclude 를 사용하여 제외하는 필드를 나열 할 수 있다.
from rest_framework import serializers
from . import models
class BlogSerializer(serializers.ModelSerializer) :
class Meta :
model = models.Post # post 모델 사용
exclude = 'title' # title 필드 제외
read_only_fields 를 사용해 읽기 전용 필드를 만들 수 있다.
from rest_framework import serializers
from . import models
class BlogSerializer(serializers.ModelSerializer) :
class Meta :
model = models.Post # post 모델 사용
fields = '__all__' # 모든 필드 포함
read_only_fields = 'title' # title 필드는 읽기전용