Django Rest Framework 3.1 bricht Paginierung.PaginationSerializer
Ich habe gerade aktualisiert auf Django Rest Framework 3.1 und es scheint, dass alle die Hölle Los.
in meinem serializers.py
ich war mit dem folgenden code:
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = task
exclude = ('key', ...)
class PaginatedTaskSerializer(pagination.PaginationSerializer):
class Meta:
object_serializer_class = TaskSerializer
denen war gut arbeiten. Jetzt mit der Veröffentlichung von 3.1 kann ich nicht finden Beispiele, wie das gleiche zu tun, da PaginationSerializer
ist nicht mehr da.
Ich habe versucht, Unterklasse PageNumberPagination
und die Standard - paginate_queryset
und get_paginated_response
Methoden, aber ich kann nicht mehr auf Ihre Ergebnisse serialisiert.
In anderen Worten, mein problem ist, dass ich das nicht mehr:
class Meta:
object_serializer_class = TaskSerializer
Irgendwelche Ideen?
Vielen Dank im Voraus
- Ich habe gerade laufen in genau dem gleichen problem. Ich beschloss, ein upgrade für alle meine Pakete und das war das einzige, was brach. Ich hoffe, diese bekommt beantwortet, weil ich habe nicht gefunden was entweder.
- "Ich habe gerade aktualisiert auf Django Rest Framework 3.1 und es scheint, dass alle die Hölle Los." Lol.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht sicher, ob dies die ganz richtige Weg, es zu tun, aber es funktioniert für meine Bedürfnisse. Es nutzt die Django-Paginator und eine benutzerdefinierte serializer.
Hier ist meine View-Klasse, ruft die Objekte, die für die Serialisierung
Hier ist das gehackte zusammen Serializer, nutzt meine Natürlich serializer.
Gibt mir ein Ergebnis, das ähnlich zu dem Verhalten, dass die alten paginator gab.
Ich hoffe, das hilft. Ich denke immer noch, es hat doch eine bessere Möglichkeit, dies zu tun mit der neue API, aber es ist einfach nicht gut dokumentiert. Wenn ich die Figur etwas mehr aus, ich werde meinen Beitrag Bearbeiten.
BEARBEITEN
Ich glaube, ich habe gefunden eine bessere, elegantere Art und Weise zu tun, es bey der Erstellung meiner eigenen paginator um Verhalten, wie ich verwendet, um mit dem alten Paginierte Serializer-Klasse.
Dies ist eine benutzerdefinierte paginator-Klasse. Ich überlastet die Antwort und die nächste Seite Methoden, um das Ergebnis möchte ich (d.h.
?page=2
anstelle der vollständigen url).Dann natürlich meinen Blick sehr ähnlich ist, wie Sie es umgesetzt haben, nur diesmal mit dem Custom-paginator.
Nun habe ich das Ergebnis bekommen, dass ich Suche.
Ich bin immer noch nicht sicher, wie dies funktioniert für die Durchsuchbare API (ich weiß nicht den Benutzer diese Funktion drf). Ich denke, Sie können auch erstellen Sie Ihre eigenen benutzerdefinierten Klasse für diese. Ich hoffe, das hilft!
class Meta: object_serializer_class = CourseSerializer
mit einem einfachen Konstruktorserializer = CourseSerializer(courses, many=True)
. Über diesen Punkt lassen wir die Phantasie spielen. Wie auch immer, ich bleibe lieber mit den Standardeinstellungen, aber da Sie mir den "Schlüssel", ich bin akzeptieren Sie Ihre Antwort. Danke.Ich denke, dass ich es herausgefunden (zum größten Teil zumindest):
Was wir hätten von Anfang an ist dieser:
Verwenden Sie einfach die integrierten paginator und ändern Sie Ihre
views.py
dieser:Für die gewünschte Seitengröße setzen Sie einfach die
PAGE_SIZE
imsettings.py
:Sie sollten jetzt mit allen Optionen, die im Körper vorhanden der Antwort (zählen, weiter-und zurück-links) bestellt genau wie vor dem update.
Aber es gibt noch eine Sache, die immer noch beunruhigt mich: Wir sollten auch in der Lage sein, um die neue html-Paginierung steuert, die aus irgendeinem Grund fehlen jetzt...
Ich könnte definitiv noch ein paar mehr Anregungen zu dieser...
self.display_page_controls=True
impaginate_queryset
wenn Sie außer Kraft setzen. django-rest-framework.org/api-guide/pagination/#low-level-apiErkenne ich, über ein Jahr ist vergangen, seit das gepostet wurde, aber hoffe, dies hilft anderen. Die Antwort auf meine ähnliche Frage war die Lösung für mich. Ich bin mit DRF 3.2.3.
Django Rest Framework 3.2.3 Paginierung funktioniert nicht für Generika.ListCreateAPIView
Sehen, wie es umgesetzt wurde hat mir die Lösung benötigt, um den Seitenumbruch + die Steuerelemente in den sichtbaren API.
https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/mixins.py#L39