0
ページ番号と各ページのページサイズを入力するDjango関数ベースのAPIがあります。ここに私のコードです。Djangoのページ分割によるページ数の限界値がまだ残っていません。
@api_view(['POST'])
def attendance_all_get_list_by_page(request):
# ----- YAML below for Swagger -----
"""
description: attendance_all_get_list_by_page
parameters:
- name: page
type: integer
required: true
location: form
- name: page_limit
type: integer
required: true
location: form
"""
attendance_list = Attendance.objects.all().order_by('id')
page = request.GET.get('page', request.POST['page'])
paginator = Paginator(attendance_list, request.POST['page_limit'])
try:
attendances = paginator.page(page)
except PageNotAnInteger:
attendances = paginator.page(request.POST['page'])
except EmptyPage:
attendances = paginator.page(paginator.num_pages)
serializer = AttendanceSerializer(list(attendances), many=True)
data = serializer.data[:]
return Response(data, status=status.HTTP_200_OK)
私のシリアライザ:
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = ("id", "username")
class AttendanceSerializer(serializers.ModelSerializer):
employee = EmployeeSerializer(many=False, read_only=True)
class Meta:
model = Attendance
fields = ('id','employee','created_at')
(これがあるべき私はページ= 2 PAGE_LIMIT = 2と例えば、それは次のように表示されます
16,17,18,19
の出席記録を持っていたと想像4レコードの最後のページ)
[
{
"id": 18,
"employee": {
"id": 16,
"username": "haha"
},
"created_at": "2017-12-28T03:29:29.698339Z"
},
{
"id": 19,
"employee": {
"id": 16,
"username": "haha"
},
"created_at": "2017-12-28T03:38:53.639749Z"
}
]
私は(ページ= 3 PAGE_LIMIT = 2)または(ページ= 10 PAGE_LIMIT = 2)、それはまだ
[
{
"id": 18,
"employee": {
"id": 16,
"username": "haha"
},
"created_at": "2017-12-28T03:29:29.698339Z"
},
{
"id": 19,
"employee": {
"id": 16,
"username": "haha"
},
"created_at": "2017-12-28T03:38:53.639749Z"
}
]
が表示されますなかった場合に予想される結果は
[]
いただきました私のページネーションと間違っている必要があります何かが最後のページに影響を与えています。最後のページに最後のページの結果が表示されるようにしたいが、その後は空のレコードリストにする必要がある。