问题标签 [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.
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>
?
python - 如何将上下文传递给棉花糖中的嵌套序列化程序?
从他们的嵌套示例中:
序列化UserSerializer
博客时似乎没有获得上下文。如何将上下文传递给嵌套的序列化程序?
python - 如何使用 Marshmallow 序列化 MongoDB ObjectId?
我正在使用 marshmallow 和 mongoengine 在 Flask 之上构建和 API。当我拨打电话并且 ID 应该被序列化时,我收到以下错误:
我看到了其他库的一些方法来覆盖 ObjectId 的处理方式。我还没有用棉花糖弄明白,有人知道怎么做吗?
我的模型是:
我的序列化器:
和观点:
python - ModelSerializer(model) 和 ModelSerializer().dump(model) 之间棉花糖的区别
我正在使用 marshmallow 将我的对象序列化为 JSON,并且刚刚意识到输出ModelSerializer(model).data
等于ModelSerializer().dump(model).data
它们之间有什么区别吗?
python - 使用棉花糖中的数据更新行 (SQLAlchemy)
我正在使用 Flask、Flask-SQLAlchemy、Flask-Marshmallow + marshmallow-sqlalchemy,试图实现 REST api PUT 方法。我还没有找到任何使用 SQLA 和 Marshmallow 实现更新的教程。
这是代码:
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
在加载时填充字段。我错过了什么或棉花糖不提供这样的功能吗?
python - 如何使用棉花糖序列化自定义 sqlalchemy 字段?
这几天我刚刚开始了一个名为 flask_wiki 的简单项目,我正在使用一些烧瓶扩展,如下所示:
- Flask-SQLAlchemy
- Flask-Restful
- 棉花糖
好吧,我刚刚发现 MarshMallow 项目提供了一个名为“ModelSchema”的类,它从我的 SQLAlchemy 模型中读取所有字段并提供一个完全自动化的(反)序列化器。
就我而言,我创建了一个与 RDBM 无关的“GUID”字段,并将其插入到我的 Sqlalchemy 模型中,如下所示:
GUIDField 是这样实现的:
创建测试对象的代码(通过混合器)正在工作;所有 guid 均已正确生成和验证。
考虑到这一点,刚刚创建了以下 MarshMallow 序列化器字段:
最后,我创建了 SerializerClass:
我尝试在插入和不插入 guid 字段的情况下使用最后一个代码,但在所有情况下都会出现以下错误:
所以,我最后问:如何使用marshmallow 序列化一个自定义的sqlalchemy 字段?
python - 顶级棉花糖模式验证
从Marshmallow#validation,我知道我可以在模式中的特定字段上注册验证器。如果验证器失败,则会出现以下错误:
将包含验证器失败的任何字段的错误信息:
我的问题:是否可以在架构级别(而不是在单个字段级别)进行验证并且仍然以上述方式返回错误?
作为一个任意示例,假设我想验证您是否尝试了MySchema().load()
n 个不同的键。我目前有一个@pre_load
方法可以检查输入的结构以及raise ValidationError('message')
数据是否格式错误,但我想像字段验证一样将其作为 result.errors 返回。我有哪些选择?
python - 在 python flask/marshmallow 中更改 json 属性顺序
我正在使用flask、sqlalchemy 和marshmallow 来编写一个简单的REST API。默认情况下,模型总是序列化为具有按字母顺序排列的属性的 json。
有没有办法用棉花糖指定 json 属性的顺序?
例如:
返回
但我希望
我知道 json 是一个无序的集合,对客户端来说并不重要。但是,它更多地用于开发和漂亮打印期间的调试目的。所以我希望有一个框架可以让我定义属性的顺序。
python - 棉花糖不报错
如果我使用 Marshmallow 创建这样的模式:
然后我做类似的事情:
我期待一个错误,但我得到:
为什么这个或其他任何东西都没有显示为错误?