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