[drf]airbnb api - 7 Finalizing ListRoomsView & SeeRoomView

Hyeseong·2021년 3월 24일
0

이전 시간에는 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_classListRoomsViewserializer_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
profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글