我試圖超越Django REST框架初始的平坦URL模式。例如,如果我有對象類型parentobject和childobject其中parentobject HAS childobject(s)那麼開箱REST如下所示。Django REST框架中的嵌套URL模式
^ ^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']
在parentobject響應中,會引用childobject(s)id。
GET /api/parentobject/1/
(results in)
{
"childobject": [123, 456, 789]
}
如果您需要關於childobject(或db中的所有childobjects)的詳細信息,可以引用childobject api。
/api/childobject/
/api/childobject/123/
在同一頁上不動呢? :)
我想要做的是創建一個泛型/可擴展的方式,通過parentobject api引用子級m2m關係,而不必拉ID,然後重新查詢childobject API。
/api/parentobject/1/childobject/
[
{
"childobject_prop": 1
...etc
}
]
所以上面將根據通過在表中的M2M通過Django的管理的parentobject參考是childobject(一個或多個)過濾。
這個想法也是通用的,我可以定義一個新的關係,並在最小的工作條件下具有這種能力。例如url模式會自動生成,等等。
此外,任何降序關係都將以相同的方式處理。這樣,下面的「someotherChildobject」將返回映射到childobject'123'的映射到parentobject'1'的一些其他child對象的列表。
/api/parentobject/1/childobject/123/someotherchildobject/
如果不夠清楚,請告訴我。迄今爲止,我的成功是有限的。我不想修改Django REST來完成這個任務,同時我也不想通過將我感興趣的具體內容添加到urlpatterns中來手動構建URL模式。另外,作爲獎勵,我希望通過Django中的=表應用於CUSTOM;並將通過表上的任何其他字段映射到返回數據中的字段similar to this。
謝謝!