2013-06-20 28 views
8

Sto cercando di andare oltre i pattern URL URL iniziali di Django REST Frameworks. Ad esempio, se sono presenti oggetti object parentobject e childobject in cui childobject di childobject HAS, il REST out of the box è il seguente.Pattern URL annidati in Django REST Framework

^ ^api/^^parentobject/$ [name='parentobject-list'] 
^ ^api/^^parentobject/\.(?P<format>[a-z]+)$ [name='parentobject-list'] 
^ ^api/^^parentobject/(?P<pk>[^/]+)/$ [name='parentobject-detail'] 
^ ^api/^^parentobject/(?P<pk>[^/]+)/\.(?P<format>[a-z]+)$ [name='parentobject-detail'] 
^ ^api/^^childobject/$ [name='childobject-list'] 
^ ^api/^^childobject/\.(?P<format>[a-z]+)$ [name='childobject-list'] 
^ ^api/^^childobject/(?P<pk>[^/]+)/$ [name='childobject-detail'] 
^ ^api/^^childobject/(?P<pk>[^/]+)/\.(?P<format>[a-z]+)$ [name='childobject-detail'] 

All'interno delle risposte del genitore, ci saranno riferimenti all'ID di childobject (s).

GET /api/parentobject/1/ 

(results in) 
{ 
    "childobject": [123, 456, 789] 
} 

Se si desidera che i dettagli sul ChildObject (o tutti i childobjects nel DB) è possibile fare riferimento al api ChildObject.

/api/childobject/ 
/api/childobject/123/ 

Sulla stessa pagina? :)

Quello che voglio fare è creare un modo generico/estensibile di riferirsi alle relazioni m2m del bambino attraverso l'API parentobject senza dover estrarre id, quindi eseguire la query sull'api childobject.

/api/parentobject/1/childobject/ 

[ 
    { 
     "childobject_prop": 1 
     ...etc 
    } 
] 

Così quanto sopra sarebbe ChildObject (s) filtrato basato sul riferimento ParentObject nel m2m attraverso tavolo gestito da Django.

L'idea è anche che questo sarebbe generico nella misura in cui potrei definire una nuova relazione passante e avere questa capacità con un lavoro minimo. per esempio. gli schemi URL sarebbero automaticamente, ecc.

Inoltre, qualsiasi relazione discendente verrebbe gestita allo stesso modo. Tale che "someotherchildobject" di seguito restituirebbe l'elenco di someotherchildobject (s) mappati a childobject '123', che sono mappati a parentobject '1'.

/api/parentobject/1/childobject/123/someotherchildobject/ 

Se ciò non è abbastanza chiaro fammelo sapere. Il mio successo finora è stato limitato. Non voglio modificare Django REST per realizzare questo, e allo stesso tempo non voglio contrarre i pattern URL 'manualmente' aggiungendo quelli specifici che mi interessano nelle urlpattern.

Inoltre, come bonus, voglio che questo si applichi a CUSTOM attraverso = tabelle in Django; e mappare eventuali campi aggiuntivi nella tabella di passaggio sui campi nei dati restituiti similar to this.

Grazie!

risposta

Problemi correlati