在django Rest框架中实现多级嵌套关系的可写序列化器

2024-02-07

在 drf3 中,您现在可以通过重写 create() 方法并自行处理 valid_data 来实现可写嵌套序列化器。但是,如果模型中有多层嵌套关系,如下所示:

class Order(models.Model):
    """
    Order model to aggregate all the shipments created by a user at a particular time.
    """
    created_at = models.DateTimeField(
        verbose_name='created at',
        auto_now_add=True
    )
    updated_at = models.DateTimeField(
        verbose_name='updated at',
        auto_now=True
    )

class Shipment(models.Model):
    """
    Many to One Relationship with the Orders Model. Aggregates all the details of a shipment being sent.
    """
    created_at = models.DateTimeField(
        verbose_name='created at',
        auto_now_add=True
    )
    updated_at = models.DateTimeField(
        verbose_name='updated at',
        auto_now=True
    )
    order = models.ForeignKey(
        to=Order
    )

class ItemDetail(models.Model):
    """
    Specifies details of the shipment contents. One to One relationship with the Shipment Model.
    """
    shipment = models.OneToOneField(
        to=Shipment,
        primary_key=True
    )
    CONTENT_TYPES = (
        ('D', 'Documents'),
        ('P', 'Products')
    )
    content = models.CharField(
        verbose_name='package contents',
        max_length=1,
        choices=CONTENT_TYPES,
        default='P'
    )

我将如何使用自定义创建方法编写订单序列化程序来处理这种情况?我见过的所有示例(包括官方页面上的示例)都只有一层嵌套关系。

Read 在深度论证方面工作得很好。不过,我真的愿意 感谢您对编写创建/更新方法的任何帮助。


The 文档中解释了可写嵌套序列化器 http://www.django-rest-framework.org/api-guide/relations/#writable-nested-serializers.

请不要在创建/更新中重新创建新的序列化器。 一旦您点击最顶层的序列化程序创建/更新,您的所有数据都会得到验证,包括嵌套的数据。

此时,您必须自己编写从 valid_data 到各种对象的映射。

我尝试使其在 DRF 2.x 中自动化,但事实证明有太多用例,其中一些是专有的。因此,DRF 将这项工作留给了开发人员(即您)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在django Rest框架中实现多级嵌套关系的可写序列化器 的相关文章

  • Django 中从 sqlite 迁移到 postgresql

    我想迁移自sqlite to PostgreSQL db 我安装了 postgresql 并在其 shell 上创建数据库 然后配置我的 django 设置如下 default ENGINE django db backends postg
  • Google App Engine Flexi 上 Django 的 Postgres 设置

    我正在尝试在应用程序引擎灵活环境中使用 postgres 设置 django 我按照这里的说明进行操作 https cloud google com appengine docs flexible python using cloud sq
  • 将 transaction.commit_manually() 升级到 Django > 1.6

    我继承了为 Django 1 4 编写的应用程序的一些代码 我们需要更新代码库以使用 Django 1 7 并最终更新到 1 8 作为下一个长期支持版本 在一些地方它使用旧风格 transaction commit manually and
  • ModelChoiceField 在提交表单时给出无效选择错误

    我想允许用户删除特定模型的关联外键列表 假设我们有这两个模型 class IceBox models Model class FoodItem models Model name models CharField icebox models
  • Django 选择性转储数据

    是否可以有选择地过滤哪些记录Django的dumpdata管理命令输出 我有几个模型 每个模型都有数百万行 我只想转储一个模型中符合特定条件的记录 以及引用任何这些记录的所有外键链接记录 考虑这个用例 假设我有一个生产数据库 其中我的用户模
  • Django模型更新或创建具有唯一约束的对象

    有一个模型 class Proxy models Model host models CharField max length 100 port models CharField max length 10 login models Cha
  • Django:使用条件 {% extends %} 使 {% block "div" %} 成为条件

    我想分享一个 AJAX 和常规 HTTP 调用之间的模板 唯一的区别是一个模板需要扩展 base html html 而另一个则不需要 我可以用 extends request is ajax yesno app base ajax htm
  • 在 Python/Django 中将用户的 facebook/twitter 好友与网站用户进行比较

    我想知道是否有人可以帮助指导解决这个相当常见的问题的方法 我正在构建一个简单的网站 用户可以连接他们的 Twitter 帐户进行注册 我想创建一个界面 向他们显示哪些推特好友已经在使用该网站 因此 我可以获得用户的 Twitter 朋友列表
  • Django 的内联管理:一个“预填充”字段

    我正在开发我的第一个 Django 项目 我希望用户能够在管理中创建自定义表单 并向其中添加字段当他或她需要它们时 为此 我在我的项目中添加了一个可重用的应用程序 可在 github 上找到 https github com stephen
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • 带有用户信息的 Django Logger

    我只是好奇 是否可以放User内的信息formatters信息输入LOGGING配置在setting py 现在我只是将该信息放入要记录的消息中 但也许有一种方法可以将其设置为formatters争论 这是我的LOGGING现在的配置 LO
  • 仅第一个加载的 Django 站点有效

    我最近向 stackoverflow 提交了一个问题 标题为使用mod wsgi在apache上多次请求后Django无限加载 https stackoverflow com questions 71705909 django infini
  • 按外键字段的计数排序?

    我有一个用户模型和一个提交模型 每个提交都有一个名为 user subscribed 的外键字段 用于上传该提交的用户 class Submission models Model uploaded by models ForeignKey
  • Pickle django 查询?

    是否可以在数据库中腌制或以某种方式存储 django 查询 这是行不通的 u User objects all import cPickle pickled query cPickle dumps u and store the pickl
  • 如何在 django-rest 中处理 M2M 关系

    让我们从 django 文档中使用的有关 M2M 关系的模型开始 该模型使用 through 参数来指向将充当中介的模型 class Person models Model name models CharField max length
  • 用于渲染 html 子集的 Django templatetag

    我有一些 html 在本例中是通过 TinyMCE 创建的 我想将其添加到页面中 但是 出于安全原因 我不想只打印用户输入的所有内容 有谁知道模板标签 最好是过滤器 只允许呈现 html 的安全子集 我意识到 Markdown 和其他人就是
  • 如何在Django终端后台启动celery

    我开始芹菜作为 python manage py celeryd 它正在工作 但在前台 然后为了测试命令 我需要启动另一个终端并在那里执行操作 有什么办法可以在后台启动它吗 我试过这个 python manage py celeryd 但话
  • 如何手动发送django异常日志?

    我的应用程序中有一个应该返回的特定视图HttpResponse 如果一切都成功完成并且类似HttpResponseBadRequest 否则 此视图适用于外部数据 因此可能会引发一些意外的异常 我当然需要知道发生了什么 所以我有这样的东西
  • Django 独特的不工作

    我在从查询中过滤掉重复项时遇到问题 我正在使用 Django 1 4 和 Postgres 8 4 13 我在我的模型对象上使用这个查询 它是一个 jquery 自动完成 term request GET get term field re
  • 无法导入QUERY_TERMS

    我正在运行一个网站Python and Django Django filters 2 1 installed Django 2 1 installed 当我运行时 我收到以下错误 importError Could not import

随机推荐

  • 为旧浏览器显示替代错误页面时使用什么 HTTP 状态代码?

    我有一个大量使用 CSS3 和一些 HTML5 现代功能的网站 所以它在 IE7 或更低版本中不起作用并且看起来很糟糕 我们决定不支持这些旧浏览器 因为这对于极少数用户来说工作量太大 他们看到的是特殊的错误 警告页面 而不是显示常规页面 他
  • Delphi 中更好的多线程调试

    从关于 Delphi IDE 中的错误的另一个问题的答案开始 有谁知道是否有办法改进 IDE 的多线程调试功能 或者如果没有 至少为什么它有时如此糟糕 当程序中有多个线程时 使用 F7 或 F8 单步执行代码通常会导致长时间暂停 或者整个
  • 删除 Google Cloud Functions 的 tmp 文件夹中的文件

    我目前正在 os tmpdir 文件夹中的谷歌云函数中写入文件 现在我知道每次函数触发时都会略有不同 并且函数调用之间的 tmp 文件夹永远不会相同 不能两次引用相同的 tmp 文件夹 我的问题是我是否需要在函数完成执行之前删除该文件 或者
  • GWT:使用 GWT 登录页面对应用程序的某些部分进行身份验证

    我的应用程序具有一些所有用户都可以访问的功能 以及一些其他功能的访问权限应仅限于经过身份验证的用户 所有这些受限制的功能都存在于某些 GWT Places 集合中 因此 应用程序中可用的所有 Places 可以分为两组 所有人均可访问 和
  • AngularJS 禁用指令

    我正在使用editable text指令来自xeditableAngularJS 的模块 有没有办法禁用整个页面的指令 我考虑过使用替换可编辑文本 variable where variable editable text 启用和varia
  • 计算补货点 - 基于集合的 SQL 查询

    我有一个包含以下数据的视图 它代表 2 个生产单元的一种计划 每个细胞生产由多个部分组成的产品 每个生产单元都可以生产任何产品 但对于给定产品 每个单元的生产周期时间通常会有所不同 因为这些单元具有不同的配置 工具 设备 人力等 生产是按批
  • 包私有伴随对象中的隐式值/转换

    我试图找到与此相关的任何信息 文档 规格等 但这个主题似乎很难用谷歌搜索 我要求提供有关以下内容为何有效的参考资料 trait Foo A package bar trait Bar private bar object Bar impli
  • 在 Rails 中的路由上使用通配符和重定向时出错

    match myroute gt redirect http google com as gt myroute 上面的行在routes rb导致以下错误 Users user rvm rubies ruby 1 9 2 p290 lib r
  • 如何从实体对象获取对上级对象的引用

    如何从 EntityObject 类获取对上级 ObjectContext 的引用 看看下面的链接 http blogs msdn com alexj archive 2009 06 08 tip 24 how to get the obj
  • ScrollViewer 无法在 groupbox 内工作?

    我想包括ScrollViewer in my Groupbox 但它不起作用 我的代码是
  • Yandex Metrica 标签降低了网站速度 Google PageSpeed Insights 报告

    因此 在我的所有网页上 我都有此代码 Yandex metrika 使用该代码进行分析 根据谷歌的说法 这个脚本正在减慢我的页面速度 需要改变它的加载方式 以免渲染阻塞 TTI 时间输入阻塞 FID 第一个输入延迟阻塞 第一个内容绘制阻塞
  • 在数据框中设置样式后执行操作

    每当我尝试在代码中设置样式后执行任何操作时 我都会看到以下错误 AttributeError Styler 对象没有属性 drop 在本例中 我尝试在应用样式后删除一列 在其他情况下 我尝试连接 2 个数据帧 但它会引发类似的错误 我对 P
  • psql:错误:致命:用户的 Cloud SQL IAM 服务帐户身份验证失败

    我已按照以下说明使用 IAM 身份验证设置了我的云 sql 数据库 https binx io 2021 05 19 how to connect to a cloudsql with iam authentication https bi
  • 不要扩展 CMake 列表变量

    我有一个 CMake 脚本 可以通过以下方式运行一些测试add test 在 Windows Server 2008 不要问 下运行于 CMake 3 15 当调用这些测试时 它们运行的 环境中的 PYTHONPATH 环境变量似乎会重置为
  • 将 twig 与 React.js 集成

    我已经成功使用 php symphony 及其 twig 模板系统构建了一个 Web 应用程序 但现在需求发生了变化 我必须使用 Node React js 我已经阅读了一些关于 React js 的文档 但我仍然不知道在严格的时间范围内最
  • 无法更改 PySide.QtGui 对象的 __class__

    我经常使用 PyQt4 有时我喜欢重载一些对象以允许我添加一些功能 这在 PyQt4 中工作得很好 例如 from PyQt4 import QtGui button QtGui QPushButton class MyPushButton
  • 在 amazon ec2 Linux 微实例上的 virtualenv 中安装 scipy 时遇到问题

    我已经安装成功了scipy在亚马逊 ec2 微实例 Ubuntu 13 04 上的默认 python 编译器中 但是我无法安装scipy在虚拟环境中 pip install scipy以这个错误结束 scipy sparse sparset
  • 将 SSD 转换为张量流中的冻结图。必须使用哪些输出节点名称?

    我使用 SSD 进行训练TensorFlow 对象检测 API https research googleblog com 2017 06 supercharge your computer vision models html如上所述he
  • 有向无环图遍历...有帮助吗?

    有点超出我的深度 需要给朋友打电话 我有一个需要遍历的有向非循环图 这是我第一次接触图论 我最近读了很多关于它的文章 但不幸的是我没有时间从学术上解决这个问题 有人可以给我一些关于如何处理这棵树的帮助吗 规则如下 有n根节点 我称之为 源
  • 在django Rest框架中实现多级嵌套关系的可写序列化器

    在 drf3 中 您现在可以通过重写 create 方法并自行处理 valid data 来实现可写嵌套序列化器 但是 如果模型中有多层嵌套关系 如下所示 class Order models Model Order model to ag