【问题标题】:Nested URL Patterns in Django REST FrameworkDjango REST 框架中的嵌套 URL 模式
【发布时间】:2013-06-17 12:15:32
【问题描述】:

我正在尝试超越 Django REST 框架的初始平面 URL 模式。例如,如果我有对象类型 parentobject 和 childobject,其中 parentobject 有 childobject(s),那么开箱即用的 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']

在父对象响应中,会有对子对象 ID 的引用。

GET /api/parentobject/1/

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

如果您想要有关子对象(或数据库中的所有子对象)的详细信息,您可以参考子对象 api。

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

还在同一页面上? :)

我想做的是创建一种通用/可扩展的方式,通过 parentobject api 引用子 m2m 关系,而不必拉 ids,然后重新查询 childobject api。

/api/parentobject/1/childobject/

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

因此,以上内容将根据 m2m 中的父对象引用过滤子对象,通过 Django 管理的表。

这个想法也是通用的,以至于我可以定义一个新的直通关系,并通过最少的工作获得这种能力。例如url 模式将是自动的,等等。

此外,任何降序关系都将以相同的方式处理。这样下面的“someotherchildobject”将返回映射到子对象“123”的 someotherchildobject(s) 的列表,这些子对象映射到父对象“1”。

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

如果还不够清楚,请告诉我。到目前为止,我的成功是有限的。我不想修改 Django REST 来实现这一点,同时我不想通过将我感兴趣的特定模式添加到 urlpatterns 中来“手动”构建 URL 模式。

另外,作为奖励,我希望通过= Django 中的表将其应用于 CUSTOM;并将直通表上的任何其他字段映射到返回数据similar to this 中的字段。

谢谢!

【问题讨论】:

    标签: django rest django-rest-framework


    【解决方案1】:
    【解决方案2】:

    drf-extensions 也提供嵌套路由,看看http://chibisov.github.io/drf-extensions/docs/#nested-routes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 2014-05-21
      • 2014-07-26
      • 2021-06-23
      • 2014-09-18
      相关资源
      最近更新 更多