LoginSignup
0
0

More than 1 year has passed since last update.

[メモ] Django REST の GET 応答に任意の情報を詰める

Last updated at Posted at 2021-08-22
本シリーズのトップページ
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 さんありがとう!.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0