Ich habe eine Django-Funktion basierte API, die Seitenzahl und auf jeder Seite die Größe der Seite eingibt. Hier ist mein Code.Django Paginierung über der Seitengrenze zeigt immer noch die letzten Ergebnisse nie endend
@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)
mein Serializer:
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')
Man stelle ich Besucherrekord von
16,17,18,19
zum Beispiel mit page = 2 page_limit = 2, es folgendes zeigen So hatte (dies sollte sein die letzte Seite von 4 Aufzeichnungen)
[
{
"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"
}
]
wenn ich es tut (page = 3 page_limit = 2) oder (page = 10 page_limit = 2), wird es noch zeigen
[
{
"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"
}
]
das erwartete Ergebnis sollte
[]
Was stimmt nicht mit meiner Paginierung sein Etwas wirkt sich auf der letzten Seite aus. Ich möchte, dass die letzte Seite das Ergebnis der letzten Seite anzeigen sollte, aber danach sollte es leere Listen sein.