2013-06-20 15 views
8

Ich versuche, über die anfänglichen flachen URL-Muster von Django REST Frameworks hinauszugehen. Zum Beispiel, wenn ich die Objekttypen Elternobjekt und Kindobjekt habe, wobei Elternobjekt HAS Kindobjekt (e) hat, dann ist die Standard-REST wie folgt.Verschachtelte URL-Muster im 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'] 

Innerhalb der Elternobjektantworten gibt es Verweise auf die Kindobjekt (ID).

GET /api/parentobject/1/ 

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

Wenn Sie Details über die Childobject wollen (oder alle childobjects in der db) können Sie die Childobject api verweisen können.

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

Auf der gleichen Seite noch? :)

Was ich tun möchte, ist eine generische/erweiterbare Möglichkeit der Bezugnahme auf Kind m2m Beziehungen über das Elternobjekt API erstellen, ohne IDs zu ziehen, und dann requery das Kindobjekt api.

/api/parentobject/1/childobject/ 

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

So die oben gefiltert Childobject (s) in der m2m durch Tabelle von Django verwaltet auf der Parent Referenz basierend wäre.

Die Idee ist auch, dass dies in dem Maße generisch sein würde, dass ich eine neue durch Beziehung definieren und diese Fähigkeit mit minimaler Arbeit haben könnte. z.B. Die URL-Muster würden automatisch usw.

Außerdem würden alle absteigenden Beziehungen auf die gleiche Weise behandelt. So, dass "someotherchildobject" unten die Liste vonotherotherchildobject (s) zurückgibt, die dem childobject "123" zugeordnet werden, die auf Elternobjekt "1" zugeordnet werden.

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

Wenn das nicht klar genug ist, dann lass es mich wissen. Mein Erfolg war bisher begrenzt. Ich möchte Django REST nicht modifizieren, um dies zu erreichen, und gleichzeitig möchte ich keine URL-Muster "manuell" konstruieren, indem ich die spezifischen, an denen ich interessiert bin, in die URL-Muster einfüge.

Auch, als Bonus, möchte ich dies auf CUSTOM durch = Tabellen in Django gelten; und ordnen Sie alle zusätzlichen Felder in der durchgehenden Tabelle den Feldern in den zurückgegebenen Daten zu similar to this.

Danke!

Antwort

Verwandte Themen