问题标签 [marshmallow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2797 浏览

python - 序列化具有多个孩子的孩子的 SQLAlchemy 对象

我有一个用marshmallow序列化的 SLQALchemy 对象。

该对象有 N 个赞和 N 个评论。它看起来像这样:

序列化程序如下所示:

我尝试像这样在视图中运行它:

并将其转换为 JSON:

当我尝试运行它时,我得到一个错误list indices must be integers, not str。它来自marshmallow/serializer.py. 当我在那里记录一些东西时,看起来棉花糖正在尝试访问text. <Comment>它应该单独访问每个<Comment>然后访问该text属性。

我的序列化程序中是否缺少某些内容?我知道many=True在 ParentSerializer 中发送参数会告诉 marshmallow 它应该遍历<Parent>. 有没有办法告诉棉花糖它也应该期待很多<Comment><Like>

0 投票
1 回答
3893 浏览

python - 如何将上下文传递给棉花糖中的嵌套序列化程序?

从他们的嵌套示例中:

序列化UserSerializer博客时似乎没有获得上下文。如何将上下文传递给嵌套的序列化程序?

0 投票
4 回答
7337 浏览

python - 如何使用 Marshmallow 序列化 MongoDB ObjectId?

我正在使用 marshmallow 和 mongoengine 在 Flask 之上构建和 API。当我拨打电话并且 ID 应该被序列化时,我收到以下错误:

我看到了其他库的一些方法来覆盖 ObjectId 的处理方式。我还没有用棉花糖弄明白,有人知道怎么做吗?

我的模型是:

我的序列化器:

和观点:

0 投票
1 回答
107 浏览

python - ModelSerializer(model) 和 ModelSerializer().dump(model) 之间棉花糖的区别

我正在使用 marshmallow 将我的对象序列化为 JSON,并且刚刚意识到输出ModelSerializer(model).data等于ModelSerializer().dump(model).data

它们之间有什么区别吗?

0 投票
5 回答
14295 浏览

python - 使用棉花糖中的数据更新行 (SQLAlchemy)

我正在使用 Flask、Flask-SQLAlchemy、Flask-Marshmallow + marshmallow-sqlalchemy,试图实现 REST api PUT 方法。我还没有找到任何使用 SQLA 和 Marshmallow 实现更新的教程。

这是代码:

0 投票
1 回答
2778 浏览

python - 在加载时强制“无”并在转储时跳过“无”

我正在使用marshmallow 2.0.0rc2 来验证 HTTP 请求的输入数据,并将 SQLAlchemy 模型加载到 HTTP 响应上的 JSON。我偶然发现了两个问题:

首先,在 HTTP PUT 请求上从 JSON 加载数据时,我想将所有缺少的字段填充为 None,以正确覆盖 SQLAlchemy 中的数据。现在我正在使用以下代码:

它可以工作,但我想它有问题,因为我正在搞乱marshmallow.Field附加到Schema类的实例。并且在处理完Schema实例后,我们修补的所有字段都将卡在新的缺失而不是默认字段。

其次,在将数据从 SQLAlchemy 转储到 JSON 时,所有丢失的字段都被解析为 None,并且 JSON 填充了{"key": null, }数据。这是不受欢迎的行为,我在post_dump触发时清理它们。

和以前一样,它正在工作,但包括创建一些BaseSchema类,将这个逻辑传递给所有继承的类。

我已经搜索了一段时间的文档,但没有找到任何正确的方法来交换这种行为,即在转储时跳过字段并None在加载时填充字段。我错过了什么或棉花糖不提供这样的功能吗?

0 投票
2 回答
8498 浏览

python - 如何使用棉花糖序列化自定义 sqlalchemy 字段?

这几天我刚刚开始了一个名为 flask_wiki 的简单项目,我正在使用一些烧瓶扩展,如下所示:

  • Flask-SQLAlchemy
  • Flask-Restful
  • 棉花糖

好吧,我刚刚发现 MarshMallow 项目提供了一个名为“ModelSchema”的类,它从我的 SQLAlchemy 模型中读取所有字段并提供一个完全自动化的(反)序列化器。

就我而言,我创建了一个与 RDBM 无关的“GUID”字段,并将其插入到我的 Sqlalchemy 模型中,如下所示:

GUIDField 是这样实现的:

创建测试对象的代码(通过混合器)正在工作;所有 guid 均已正确生成和验证。

考虑到这一点,刚刚创建了以下 MarshMallow 序列化器字段:

最后,我创建了 SerializerClass:

我尝试在插入和不插入 guid 字段的情况下使用最后一个代码,但在所有情况下都会出现以下错误:

所以,我最后问:如何使用marshmallow 序列化一个自定义的sqlalchemy 字段?

0 投票
1 回答
11949 浏览

python - 顶级棉花糖模式验证

Marshmallow#validation,我知道我可以在模式中的特定字段上注册验证器。如果验证器失败,则会出现以下错误:

将包含验证器失败的任何字段的错误信息:

我的问题:是否可以在架构级别(而不是在单个字段级别)进行验证并且仍然以上述方式返回错误?

作为一个任意示例,假设我想验证您是否尝试了MySchema().load()n 个不同的键。我目前有一个@pre_load方法可以检查输入的结构以及raise ValidationError('message')数据是否格式错误,但我想像字段验证一样将其作为 result.errors 返回。我有哪些选择?

0 投票
1 回答
2428 浏览

python - 在 python flask/marshmallow 中更改 json 属性顺序

我正在使用flask、sqlalchemy 和marshmallow 来编写一个简单的REST API。默认情况下,模型总是序列化为具有按字母顺序排列的属性的 json。

有没有办法用棉花糖指定 json 属性的顺序?

例如:

返回

但我希望

我知道 json 是一个无序的集合,对客户端来说并不重要。但是,它更多地用于开发和漂亮打印期间的调试目的。所以我希望有一个框架可以让我定义属性的顺序。

0 投票
1 回答
3585 浏览

python - 棉花糖不报错

如果我使用 Marshmallow 创建这样的模式:

然后我做类似的事情:

我期待一个错误,但我得到:

为什么这个或其他任何东西都没有显示为错误?