ListAPIView

1873 ワード

今は部屋のリストを見るのではなく、部屋自体を見せています.
ListAPI viewを使用すると、より簡単にList画面とPagenationを実現できます.
rooms/views.py
from rest_framework.generics import ListAPIView, RetrieveAPIView
from .models import Room
from .serializers import RoomSerializer, BigRoomSerializer


class ListRoomsView(ListAPIView):
    queryset = Room.objects.all() #queryset 가져오기
    serializer_class = RoomSerializer


class SeeRoomView(RetrieveAPIView):
    queryset = Room.objects.all()
    serializer_class = BigRoomSerializer
上記のように、RetrieveAPIViewをインポートします.
RetrieveAPIViewは、1つのデータを表示したい場合にのみ使用する方法です.
rooms/urls.py
urlpatterns=[...,path("<int:pk>/", views.SeeRoomView.as_view())]
rooms/serializers.py
class RoomSerializer(serializers.ModelSerializer):
  user = TinyUserSerializer()

  class Meta:
      model = Room
      fields = ("pk", "name", "price", "instant_book", "user") #1개의 데이터만을 불러와야 되기 때문에 pk 값을 알아야 한다. fields에 pk 추가
    
次にapi/v 1/rooms/を表示します.

エラーは上のように発生します.
ListRoomsViewと同様に、
queryset=Room.objects.all()
追加すればいいですが、ちょっとおかしいです.私たちが見たいのは部屋だからです.今はserializerクラスが必要です.
class BigRoomSerializer(serializers.ModelSerializer):
    class Meta:
        model = Room
        fields = ("__all__") #Model의 모든 Field를 사용해야 함을 나타낸다.
    
別のclassを作成する場合

このように1部屋しか見えません.