ListAPIView
1873 ワード
今は部屋のリストを見るのではなく、部屋自体を見せています.
ListAPI viewを使用すると、より簡単にList画面とPagenationを実現できます.
rooms/views.py
RetrieveAPIViewは、1つのデータを表示したい場合にのみ使用する方法です.
rooms/urls.py
class RoomSerializer(serializers.ModelSerializer):を表示します.
エラーは上のように発生します.
ListRoomsViewと同様に、
このように1部屋しか見えません.
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.pyclass 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部屋しか見えません.
Reference
この問題について(ListAPIView), 我々は、より多くの情報をここで見つけました https://velog.io/@gktmd652/ListAPIViewテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol