Django rest-framework Serializer

홍찬기
3 min readAug 1, 2019

--

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 User
class 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 필드는 읽기전용

--

--

No responses yet