本シリーズのトップページ |
---|
https://qiita.com/robozushi10/items/4559a281d0319eb62c6c |
概要
ページネーション(Pagination)を自作することになった際に、
次の 2つの情報を GET の応答で返却することになった.
(デフォルトの GET の挙動だと、(A) のみしか返却できない)
(A) GETで要求された内容に対するレコード
(B) 全レコードの件数
views.py
このとき APIView を継承したクラスで get をオーバライドしていたとした場合、
次のように変更することで上記の要求が満たせる.
class XAPIView(views.APIView):
def get(self, request, *args, **kwargs):
略
# モデル X のデータを 4件取り出してリスト L に詰める
L = []
L.append( X.objects.all()[0:4] )
# 4件のレコードを返却する
ser = XSerializer(L, many=True)
# 4件のレコードは 'items' に詰めて、モデル X が全部で何件あるかという情報を 'total' に詰める.
return Response(
- ser.data
+ {
+ 'items': ser.data,
+ 'total': X.objects.all().count()
+ },
status=status.HTTP_200_OK
)
以上は、同僚に教えてもらった内容である. Micheal さんありがとう!.