2015-05-20 35 views
6

Considerare semplice visione:detail_route annidata in django-resto-quadro

class SomeView(viewsets.GenericViewSet, 
       viewsets.mixins.ListModelMixin, 
       viewsets.mixins.RetrieveModelMixin): 
    ... 

    @decorators.detail_route(methods=ENDPOINT_PROPERTY_METHODS) 
    def some_property(self, request, *args, **kwargs): 
     view = SomeOtherView 
     return view.as_view(CRUD_ACTIONS)(request, *args, **kwargs) 

sto chiamando SomeOtherView di avere la capacità di avere un punto finale-proprietà come /someresource/:id/myproperty, quindi questa proprietà riceverà richiesta e può fare tutto CRUD Azioni.

Ma, voglio SomeOtherView per avere anche il detail_route dichiarato per avere qualcosa come /someresource/:id/myproperty/nestedproperty.
Poiché sto chiamando lo SomeOtherView in modo dinamico, non è possibile registrare gli URL, quindi non è possibile chiamare la proprietà nidificata.

Come posso risolvere tale situazione per avere proprietà annidate?

risposta

3

Non v'è attualmente alcun modo nativo nel creare automaticamente percorsi nidificati in django-resto-quadro, ma ci sono alcuni modi per raggiungere il tuo obiettivo:

  1. uso DRF-estensioni, quali Voi cercate sono annidati i router : https://chibisov.github.io/drf-extensions/docs/#nested-routes
  2. creare i percorsi manualmente con i router di default, qui è necessario filtrare la queryset manualmente

Anche se non ha spiegato in dettaglio che cosa si vuole achive con questa struttura api non vorrei reco continuare questo percorso perché le viste non sono pensate per essere usate in questo modo.