2015-05-20 16 views
6

Rozważmy prosty pogląd:Zagnieżdżony detail_route w django-Rest-ram

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) 

Dzwonię SomeOtherView mieć zdolność do punktu końcowego-PROPERTY jak /someresource/:id/myproperty, więc ta własność otrzyma żądanie i może zrobić wszystko CRUD działania.

Ale chcę SomeOtherView mieć zadeklarowany detail_route wewnątrz też mieć coś jak /someresource/:id/myproperty/nestedproperty.
Ponieważ dynamicznie wywołuję SomeOtherView, adresów URL nie można zarejestrować, więc nie można wywoływać właściwości zagnieżdżonych.

Jak mogę rozwiązać taką sytuację, aby mieć zagnieżdżone właściwości?

Odpowiedz

3

Obecnie nie ma natywny sposób na automatyczne tworzenie zagnieżdżonych trasy w Django-Rest-ram, ale istnieje kilka sposobów, aby osiągnąć swój cel:

  1. użytku DRF-extentions, co Szukasz są zagnieżdżone routery : https://chibisov.github.io/drf-extensions/docs/#nested-routes
  2. tworzyć ścieżki ręcznie z routerami domyślnych, tutaj trzeba filtrować queryset ręcznie

Chociaż nie wyjaśnił szczegółowo, co chcesz achive z tej struktury api nie będę reco kontynuować tę ścieżkę, ponieważ poglądy nie mają być używane w ten sposób.