
Serializer는 기본적으로 데이터가 보여야하는 방식을 성명해줘야 하는 Form이다.(JSON 형태)
serizlize는 파이썬 객체 👉 JSON 객체
rooms/views.py
from rest_framework.decorators import api_view
from rest_framework.response import Response #'Response'는 django rest framework 응답에서 오는것
from .models import Room
from .serializers import RoomSerializer
@api_view(["GET"])
def list_rooms(request):
rooms = Room.objects.all()
serialized_rooms = RoomSerializer(rooms, many=True) #RoomSerializer는 Room 리스트를 이해하지 못하기 때문에 many=True를 추가한다.
return Response(data=serialized_rooms.data)
rooms/serializers.py
from rest_framework import serializers
class RoomSerializer(serializers.Serializer):
name = serializers.CharField(max_length=140)
price = serializers.IntegerField()
bedrooms = serializers.IntegerField()
instant_book = serializers.BooleanField()
RoomSerializer(serializers.ModelSerailzer)
위와 같이 하면 어떤 것도 선언해 줄 필요가 없고
다음과 같이 바꿔주면 된다.
from rest_framework import serializers
from .models import Room
class RoomSerializer(serializers.ModelSerializer):
class Meta:
model=Room
fields=("name", "price", "instant_book")
또한 room Model은 user를 갖고 있기 때문에
fields에 user를 추가하면 다음과 같이 나온다.

그리고 superhost의 여부를 얻기 위해 user의 새로운 serializer를 만든다.
users/serializers.py
from rest_framework import serializers
from .models import User
class TinyUserSerializer(serializers.ModelSerializer):
class Meta:
model=User
fields=("username","superhost")
그리고 내가 소유하고 있는 Room에게 serializer를 알려야 한다.
rooms/serializers.py 파일에
from users.serializers import TinyUserSerializer
...
user = TinyUserSerializer()