Verwenden einer einzigen URL für GET und POST mit Django REST Framework list_route

Die ModelViewSets in DRF waren sehr hilfreich, aber ich versuche, einen von ihnen zu erweitern, um eine Liste von Objekten bei einer GET-Anfrage zurückgeben zu können und eine Liste auf einer POST-Anfrage zu verarbeiten. Bisher scheint es, dass ich den @list_route Dekorateur verwenden muss, um diese Funktionalität hinzuzufügen.

Ich habe es gut gemacht, um benutzerdefinierte Routen in anderen Setsets hinzuzufügen, aber das ist das erste Mal, dass ich versuche, eine hinzuzufügen, die mehr als eine Methode akzeptiert. Hier ist was ich bisher habe

 class PickViewset(viewsets.ModelViewSet): queryset = Pick.objects.all() serializer_class = PickSerializer def get_queryset(self): #gets the correct queryset @list_route(methods=['get', 'post']) def update_picks(self, request, league, week, format = None): if request.method == 'POST': #process/save objects here else: #otherwise return the requested list 

Ich denke das funktioniert und das ist mein Problem in urls.py – hier ist das verwandte Zeug von dort:

 #bind the pick methods explicitly update_picks = PickViewset.as_view({'get': 'update_picks'}) url(r'^api/picks/(?P<league>[\w ]+)/(?P<week>[0-9]+)/$', update_picks, name='update_picks') 

Dies funktioniert gut für GET-Anfragen, und wenn ich die update_picks Definition zu ändern

 update_picks = PickViewset.as_view({'get': 'update_picks'}) 

Dann kann ich in den POST-Code aus dem Viewset treten. Was muss ich tun, um sowohl GET- als auch POST-Anfragen an die update_picks Aktion update_picks , wo sie dann mit der Anforderungsmethode differenziert werden können?

Ich habe das Hinzufügen eines , {'post': 'update_picks'} zum as_view (), aber das funktioniert nicht.

Ich habe auch versucht, hinzuzufügen

 get_picks = PickViewset.as_view({'get': 'update_picks'}) 

Mit neuem URL-Muster

 url(r'^api/picks/(?P<league>[\w ]+)/(?P<week>[0-9]+)/$', get_picks, name='get_picks'), 

Aber das hat auch nicht geklappt

Ich habe in der list_routes nach separaten list_routes mit der gleichen URL, aber das scheint nicht unterstützt zu werden, obwohl ich etwas in den docs verpasst haben könnte.

Danke für jede Hilfe!

One Solution collect form web for “Verwenden einer einzigen URL für GET und POST mit Django REST Framework list_route”

Das actions für das ViewSet ist ein Dict, alle Methoden gehen in diesem Dict:

 get_picks = PickViewset.as_view({ 'get': 'update_picks', 'post': 'update_picks', }) 
  • Django Rest Framework - Holen Sie sich voll verwandte Objekte in der Liste
  • Verwirrung, auf der der Serializer verwendet werden soll, um das Benutzerprofil zu aktualisieren
  • Beste Weg, um eine rohe SQL-Abfrage in einer Django REST ListAPI-Ansicht zu paginieren?
  • Wie bekomme ich eine zusätzliche Spalte in relationalem Modell in Django-Rest-Framework Serializer?
  • Attributfehler beim Versuch, einen Wert für das Feld zu erhalten
  • Django REST Framework - OAuth2 Consumer API von externem Anbieter
  • Create () argument after ** muss ein Mapping sein, nicht Unicode
  • Kann die Eingabe nicht übergeben, wenn die ID als ForeignKey in Django angegeben ist
  • Übergeben Sie eine benutzerdefinierte queryset an Serializer in Django Rest Framework
  • Wie erstelle ich mehrere Objekte (verwandt) mit einer Anfrage in DRF?
  • Wie kann ich das Feld im Serializer hinzufügen?
  • Python ist die beste Programmiersprache der Welt.