이전 시간에는 ViewSet을 이용하여 API를 얼마나 극대화하여 간결하게 작성할 수 있는지 확인했지만 다시 돌아와서 ModelSerializer를 이용해 기본부터 다져보조.
users/serializers.py
기존 TinyUserSerializer로 이름을 지었는데요. UserSerializer로 더 명확하게 작성할게요.
제외하고 싶은 필드명을 exclude에 넣을게요. 콤마 빼먹지마세요.
from rest_framework import serializers
from .models import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
exclude = (
"groups",
"user_permissions",
"password",
"last_login",
"is_superuser",
"is_staff",
"is_active",
"date_joined",
"favs",
)
rooms/serializers.py
중첩 시리얼라이저를 작성했조? 위에서 처럼 이름을 UserSerialier로 바꿀게요.
제외하고 싶은 모델클래스의 필드명을 메타 클래스의 exclude 변수에 넣어 줄게요.
from rest_framework import serializers
from users.serializers import UserSerializer
from .models import Room
class RoomSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = Room
exclude = ("modified",)
rooms/views.py
기존 BigRoomSerializer로 별도로 시리얼 라이저 클래스를 serializer_class
의 값으로 넣어 줬는데요. SeeRoomView의 serializer_class
를 ListRoomsView
의 serializer_class
의 값인 RoomSerializer
로 변경 하도록 할게요.
from rest_framework.generics import ListAPIView, RetrieveAPIView
from .models import Room
from .serializers import RoomSerializer
class ListRoomsView(ListAPIView):
queryset = Room.objects.all()
serializer_class = RoomSerializer
class SeeRoomView(RetrieveAPIView):
queryset = Room.objects.all()
serializer_class = RoomSerializer