【发布时间】:2013-08-05 00:42:03
【问题描述】:
我有一个带有分层资源的 django-rest-framework REST API。我希望能够通过 POST 到 /v1/objects/<pk>/subobjects/ 来创建子对象,并让它自动将新子对象上的外键设置为来自 URL 的 pk kwarg,而无需将其放入有效负载中。目前,序列化程序正在导致 400 错误,因为它希望 object 外键位于有效负载中,但也不应将其视为可选的。子对象的 URL 是 /v1/subobjects/<pk>/(因为父对象的键不是识别它所必需的),所以如果我想 PUT 现有资源,仍然需要它。
我应该让您使用有效负载中的父级 POST 到 /v1/subobjects/ 以添加子对象,还是有一种干净的方法将 pk kwarg 从 URL 传递到序列化程序?我使用HyperlinkedModelSerializer 和ModelViewSet 作为我各自的基类。有一些推荐的方法吗?到目前为止,我唯一的想法是完全重新实现 ViewSets 并制作一个自定义 Serializer 类,其 get_default_fields() 来自从 ViewSet 传入的字典,由其 kwargs 填充。这似乎与我认为完全普通的事情有关,所以我不禁认为我错过了一些东西。我见过的每个具有可写端点的 REST API 都有这种基于 URL 的参数推断,因此 django-rest-framework 似乎根本无法做到这一点的事实似乎很奇怪。
【问题讨论】:
标签: python django rest django-rest-framework