有人能给我一个成功发布复杂json对象的序列化器的例子吗?
例如,如果我在一个请求中发布了Author
和所有Book
个帖子。
我想在一个请求中POST一个Author
的json表示和Book
的json表示,而不仅仅是书籍的主键(这是默认值)
我可以发布什么:
{"Author":"Smith, Joe", "books":{[1,2]}
}
那么我想要POST:
{"Author":"Smith, Joe", "books":[
{"title":"War and Peaceful"},{"title":"Sense and Sensational"}
]
}
我已经玩了很长时间了,在尝试POST多个对象时我确实记得这个错误:
实例在数据库“default”上,值在数据库“None”
上
搜索告诉我,在保存“父”模型对象之前,我可能需要首先在Django中保存嵌套模型对象。但是这不需要两个单独的POST请求 - 一个用于POST嵌套对象,另一个用于父级POST? (发出这些请求的客户端是移动本机应用程序)。我是否会走错路,因为我认为该框架本身支持我正在努力实现的目标。
我看到两个问题:
1.在创建新作者时,我只能发布书籍的主键
这些书已经需要先创建了。我无法在同一请求中创建新的Author
和新的Book
。
感谢您的指导!
更新:等一下 - 在DjangoRestFramework中支持嵌套写入(我认为这是我想要完成的)吗?
答案 0 :(得分:1)
更新:等一下 - 在DjangoRestFramework中支持嵌套写入(我认为这是我想要完成的)吗?
在某种意义上说,“是否有一个通用视图会自动神奇地为我做这一切?” - 不,还没有。
最好的办法是扩展其中一个基类,例如: APIView
并实现post
循环请求正文,创建所需的实体并设置关系。是的,您必须手动编写代码,但不应该太多。请记住,您仍然可以在自己的代码中利用DRF序列化程序的验证行为。