【问题标题】:Djangorestframework: Example of POSTing a nested json object in one single request?Djangorestframework:在一个请求中发布嵌套 json 对象的示例?
【发布时间】:2014-01-21 23:17:24
【问题描述】:

谁能给我一个成功发布复杂 json 对象的序列化程序示例?

例如,如果我发布了一个Author,而他的所有Books 都写在一个请求中。

我想在一个请求中发布 Author 的 json 表示和 Books 的 json 表示,而不仅仅是书籍的主键(这是默认设置)

我可以发布什么:

{"Author":"Smith, Joe", "books":{[1,2]}
}

那么我想发布什么:

{"Author":"Smith, Joe", "books":[
         {"title":"War and Peaceful"},{"title":"Sense and Sensational"}
         ] 
}

我已经玩了很长时间了,我确实记得在尝试发布多个对象时出现这个错误:

实例在数据库“默认”上,值在数据库“无”上

搜索告诉我,在保存其“父”模型对象之前,我可能需要先在 Django 中保存嵌套模型对象。但这是否需要两个单独的 POST 请求——一个用于 POST 嵌套对象,另一个用于父对象? (发出这些请求的客户端是移动原生应用程序)。我是不是走错了路,因为我认为框架本身就支持我想要完成的工作。

我看到两个问题: 1.新建Author时,只能post书籍的主键 2. 这些书需要先被创建。我无法在同一个请求中创建新的Author 和新的Book

感谢您的指导!

更新:等一下——DjangoRestFramework 是否支持嵌套写入(我认为这是我想要完成的任务)?

【问题讨论】:

    标签: python django json post django-rest-framework


    【解决方案1】:

    更新:等一下——DjangoRestFramework 是否支持嵌套写入(我认为这是我想要完成的任务)?

    从某种意义上说,“是否有一个通用视图可以自动为我完成这一切?” — 不,还没有。

    最好的办法是扩展其中一个基类,例如APIView 并实现 post 以循环请求正文,创建所需的实体并设置关系。是的,您必须手动编写代码,但不应该太多。请记住,您仍然可以在自己的代码中利用 DRF 序列化程序的验证行为。

    【讨论】:

      猜你喜欢
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 2018-02-01
      • 2018-10-24
      • 2019-04-19
      相关资源
      最近更新 更多