chr*_*hle 8 django rest django-rest-framework
我试图超越Django REST Frameworks初始的平面URL模式.例如,如果我有对象类型parentobject和childobject,其中parentobject有子对象,则开箱即用的REST如下所示.
^ ^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']
Run Code Online (Sandbox Code Playgroud)
在父对象响应中,将引用childobject(s)id.
GET /api/parentobject/1/
(results in)
{
"childobject": [123, 456, 789]
}
Run Code Online (Sandbox Code Playgroud)
如果需要有关子对象(或db中所有子对象)的详细信息,可以引用childobject api.
/api/childobject/
/api/childobject/123/
Run Code Online (Sandbox Code Playgroud)
还在同一页上?:)
我想要做的是创建一个通用/可扩展的方式通过父对象api引用子m2m关系,而不必拉动id,然后重新查询childobject api.
/api/parentobject/1/childobject/
[
{
"childobject_prop": 1
...etc
}
]
Run Code Online (Sandbox Code Playgroud)
所以上面的内容将是基于Django管理的m2m到tablem中的父对象引用进行过滤的.
我的想法是,这将是通用的,我可以定义一个新的通过关系,并具有这种能力与最小的工作.例如,网址模式将自动等.
此外,任何降序关系都将以相同的方式处理.这样下面的"someotherchildobject"将返回映射到子对象'123'的一些其他对象的列表,这些对象映射到父对象'1'.
/api/parentobject/1/childobject/123/someotherchildobject/
Run Code Online (Sandbox Code Playgroud)
如果这还不够清楚,请告诉我.到目前为止,我的成功是有限的.我不想修改Django REST来实现这一点,同时我不想通过将我感兴趣的特定内容添加到urlpatterns来"手动"构建URL模式.
另外,作为奖励,我想通过= Django中的表来应用于CUSTOM; 并将直通表上的任何其他字段映射到返回数据中与此类似的字段.
谢谢!
归档时间: |
|
查看次数: |
5842 次 |
最近记录: |