근데 serializer를 매번 model 처럼 속성을 길게 적어줘야하는 노가다를 해야하나?
아니다. 더 간단하게 해줄 수 있다. ModelSerializer를 사용하게 되면 더 간단하게 사용할 수 있다.
아래 코드를 보자
from rest_framework import serializers
from .model import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ("name", "phone", "birthday", "friend")
일반 Serializer를 사용했을때와 지금을 보자 어떤가?
훨씬 간단하게 작성이 되어졌다. 이렇게 수정하고 runserver를 통해서 확인해보자 Serializer의 내용과 같게 나올것이다.
좀 더 추가된 내용이 있다면 속성에 friend
가 추가되었는데, friend는 user 테이블과 Foreignkey관계라고 보면 json 데이터에 friend의 pk값이 나올것이다.
{
"name": "Jone",
"phone": "01000000000",
"birthday": "1990-01-01",
"friend": 4
}
client에서 요청한 데이터를 받아서 사용할때 외래키의 자세한 정보를 필요로 할때가 있다. 그때 server에서 json 데이터로 같이 보내주면 더할나위 없이 좋을거다.
그 방법은 serializer에 새로운 클래스를 하나 추가해주는 것이다.
# users/serializers.py
# 내용 추가
class TinyFriendSerializer(serializer.ModelSerializer):
class Meta:
model = Friend
fields = ("name", "best_friend")
class UserSerializer(serializers.ModelSerializer):
friend = TinyFriendSerializer()
class Meta:
model = User
fields = ("name", "phone", "birthday", "friend")
json 데이터 결과
{
"name": "Jone",
"phone": "01000000000",
"birthday": "1990-01-01",
"friend": {
"name": "Poll",
"best_friend": True
}
}
내가 작성한 그대로 필요 데이터들만 JSON으로 변환되는걸 볼 수 있다.
'Django' 카테고리의 다른 글
Django management command 사용하기 (0) | 2021.06.30 |
---|---|
Django User model Custom (0) | 2021.06.29 |
DRF serializer (0) | 2021.06.19 |
DRF 함수형 뷰 (@api_view) (0) | 2021.06.19 |
django rest framework에 대해서 (0) | 2021.06.19 |