(django/drf) Serializer vs ModelSerializer

요매·2024년 8월 23일

python-django

목록 보기
1/3
post-thumbnail

일반적인 Serializer란?

django 에서 serialize 를 해주는 객체

일반적으로 생각하는 그 serialize 맞습니다.

django 에서 serializer란?

같다고 보여집니다.
serialize 하는 객체이죠.

drf 에서 쓰입니다.

serializer

serializer는 일반적인 데이터 직렬화에 사용되며, 모델에 독립적.
결국 스스로 모든 속성을 정의해야 한다는 이야기입니다.

from rest_framework import serializers

class ExampleSerializer(serializers.Serializer):
    name = serializers.CharField(max_length=100)
    description = serializers.CharField(max_length=1000)
    created_at = serializers.DateTimeField()

deserializer

model의 직렬화에 사용되며, 모델에 의존적.
모델의 속성을 같이 사용할 수 있다는 이야기입니다.

from rest_framework import serializers
from myapp.models import MyModel

class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = '__all__'  # 모델의 모든 필드를 자동으로 포함
        # 또는 특정 필드만 선택할 수도 있습니다.
        # fields = ['name', 'description']

또한, 모델 인스턴스를 쉽게 생성하고 업데이트할 수 있는 메서드(create, update)가 자동으로 제공됩니다.
이로 인해 새로운 객체를 생성하거나 기존 객체를 수정하는 로직을 간단하게 구현할 수 있습니다.

요약

사용 목적

Serializer는 일반적인 데이터 직렬화에 사용되며, 모델에 독립적.
ModelSerializer는 특정 Django 모델과 연결되어 있으며, 해당 모델의 필드를 기반으로 자동으로 직렬화.

코드의 간결성

ModelSerializer는 코드 중복을 줄이고 자동화된 기능을 제공하여 더 간결한 코드 작성을 도와줍니다.
적어도 모델 속성을 다시 선언할 필요가 없습니다.

유연성

당연히 직접 많은것들을 할 수 있는 serializer 가 더 많은 유연함을 제공. 모델에 관계 없이 직렬화 가능.
하지만 modelserializer 도 못하는건 아닙니다.

profile
머리속에서 정리가 안돼...

0개의 댓글