So erhalten Sie eine benutzerdefinierte Listenansicht im Viewset "django-rest-framework"

8

Ich habe ein TV-Kanalmodell und habe ein Django-Restframework-Viewlet erstellt, das mir eine Liste und eine Detailansicht aus der Box gibt. Darüber hinaus habe ich zwei benutzerdefinierte Einzelobjektansichten namens all_events und now_and_next_event hinzugefügt, wie hier beschrieben: Zusätzliche Methoden für das Routing markieren . Das funktioniert bisher großartig.

%Vor%

Nun möchte ich eine benutzerdefinierte Ansicht hinzufügen, die KEINE Einzelobjektansicht, sondern eine listenähnliche Ansicht ist:

%Vor%

Wenn ich mein Viewlet deaktiviere und ein manuelles URL-Muster dafür hinzufüge, funktioniert es auch. Aber ich habe nicht herausgefunden, wie sie beide mit dem gleichen "api / channel /" - Präfix arbeiten können, oder was ich mehr möchte, wie ich die benutzerdefinierte Listenansicht-Klasse in mein Viewlet hinzufügen kann.

Hier sind meine Viewlet-URL-Muster:

%Vor%

Und ich würde gerne auf meine Listenansicht zugreifen:

%Vor%     
beluga.me 12.11.2013, 05:55
quelle

2 Antworten

5

Ab Django REST Framework 2.4 können Sie nun ViewSet Methoden mit @list_route dekorieren, um zu bekommen, wonach Sie suchen.

Aus der Dokumentation

  

Der @detail_route Dekorator enthält in seinem URL-Muster pk und ist für Methoden gedacht, die eine einzelne Instanz benötigen. Der @list_route Decorator ist für Methoden gedacht, die auf einer Liste von Objekten operieren.

Diese ersetzen die alten @link und @action Dekoratoren, die nur als Detailrouten arbeiten konnten.

    
Kevin Brown 20.12.2014, 21:58
quelle
1

Wenn Sie eine Liste von Objekten haben wollen, dann brauchen Sie List-Methode in Ihrer ListApiView: Beispiel: Model ist ModelName und Serializer-Klasse ist SerializerClassname dann lautet der Code:

%Vor%     
Arpit Singh 09.10.2016 08:32
quelle

Tags und Links