marshmallow——Nested 类型
Model 定义
这里先简单的定义一个 model.
import datetime as dtclass User:def __init__(self, name, email):self.name = nameself.email = emailself.created_at = dt.datetime.now()self.friends = []self.employer = Noneclass Blog:def __init__(self, title, author):self.title = titleself.author = author # A User object
然后我们可以根据 Model 的字段来定义相应的 Schema 类:
from marshmallow import Schema, fieldsclass UserSchema(Schema):name = fields.Str()email = fields.Email()created_at = fields.DateTime()class BlogSchema(Schema):title = fields.String()author = fields.Nested(UserSchema)
简单示例
通过在 BlogSchema 当中定义 Nested,此时 BlogSchema 将嵌套的返回 UserSchema:
user = User(name="Monty", email="monty@python.org")
blog = Blog(title="Something Completely Different", author=user)
result = BlogSchema().dump(blog)
pprint(result)
# {'title': u'Something Completely Different',
# 'author': {'name': u'Monty',
# 'email': u'monty@python.org',
# 'created_at': '2014-08-17T14:58:57.600623+00:00'}}
指定要序列化的字段
我们还可以在Nested 当中指定需要序列化/反序列化的属性:
- 通过 only 或者 exclude .
class BlogSchema2(Schema):title = fields.String()author = fields.Nested(UserSchema(only=("email",)))schema = BlogSchema2()
result = schema.dump(blog)
pprint(result)
# {# 'title': u'Something Completely Different',
# 'author': {'email': u'monty@python.org'}
# }
通过 only 属性,此时author 对象只序列化了 email 这个属性,
同样我们可以在实例化 Schema 对象的时候进行指定:
class SiteSchema(Schema):blog = fields.Nested(BlogSchema2)schema = SiteSchema(only=("blog.author.email",))
result = schema.dump(site)
pprint(result)
# {# 'blog': {# 'author': {'email': u'monty@python.org'}
# }
# }
下一篇:marshmallow——自定义类型
marshmallow——Nested 类型相关推荐
- Es的针对于nested类型的多重子聚合
1.业务背景 一家店会由多个人维护,一家店会绑定一个城市,现有需求需要找到某个人的常驻城市,具体需求如下,先找到这个人的所有店,再根据城市聚合店,算出店的数量,取店数量最多的城市,如果有多个城市的店数 ...
- ES实现nested类型聚合以及子聚合排序
ES实现nested类型聚合以及子聚合排序 ES实现nested类型聚合以及子聚合排序 需求业务说明 品牌近7天销量 品牌近7日销量趋势 指定某个sku日期范围销量趋势和价格趋势 电商商品日销量索引m ...
- Nested嵌套对象类型还挺实用
上一篇文章中,我们学习了Join类型的父子文档,今天继续学习一下嵌套文档,毕竟嵌套文档也是Elasticsearch推荐的,首先我们看下面这条语句 PUT word_document/_doc/1 { ...
- 转:elasticsearch nested嵌套查询
转自: [弄nèng - Elasticsearch]DSL入门篇(七)-- Nested类型查询,聚合_司马缸砸缸了-CSDN博客文章目录1. nested query2. nested 对象聚合项 ...
- 嵌套查询和连接查询的效率_Elasticsearch 7.x Nested 嵌套类型查询 | ES 干货
一.什么是 ES Nested 嵌套 Elasticsearch 有很多数据类型,大致如下: 基本数据类型: string 类型.ES 7.x 中,string 类型会升级为:text 和 keywo ...
- Elasticsearch 嵌套类型nested
1.背景介绍 我们在使用Elasticsearch做搜索引擎的时候有可能会遇到跨domain查询的场景,比如做一个学生课程管理系统,搜一个学生的名字,像知道该学生的选课情况. 当然解决问题的方法有很多 ...
- 4-Elasticsearch字段类型
Elasticsearch字段类型 字段类型分类 常用类型 binary:存储编码为Base64的字符串或二进制值 boolean:存储true或false keyword:存储时不会分词处理,适合统 ...
- Elasticsearch中字段类型(Field Type)详解
ElasticSearch 7.7 字段类型(Field datatype)详解 字符串, object, 数值, 日期, 数组, 0x00 字符串: text, keyword 5.0以后,stri ...
- elasticsearch数据类型--nested
前面写到了object数据类型,这里来说说nested.按照官方文档的说法,nested是特殊的object类型,弥补了object对象不能单独作为整体进行检索的缺陷.为了达到这个目的,nested在 ...
- ElasticSearch 动态映射和静态映射,以及四种字段类型
文章目录 1.ElasticSearch 映射 1.1 映射分类 1.2 类型推断 2.ElasticSearch 字段类型 2.1 核心类型 2.1.1 字符串类型 2.1.2 数字类型 2.1.3 ...
最新文章
- Java中 this关键字详解
- 陪孩子一起学python第二季_陪伴作文开头和结尾
- Python知识:生成声波并显示
- 随机取6位数字或字母方法
- 中国中草药提取物市场需求容量与投资价值预测报告2022年
- 为什么声明性编码使您成为更好的程序员
- Java面试之锁-公平锁和非公平锁
- Java NIO之缓冲区Buffer
- android 动态透明图片下载,动态透明壁纸软件下载-动态透明壁纸 安卓版v1.110-PC6安卓网...
- Struts2-boobooke-概述
- Xilinx_JESD204B
- [转][酷酷的滕]我爱你语录
- 让计算机休眠的命令,电脑怎么取消休眠?关闭休眠命令是什么?
- 《机器学习》课后习题 3.4 选择两个 UCI 数据集,比较 10 折交叉验证法和留 法所估计出的对率回归的错误率.
- redis压测工具redis-benchmark
- 当拓普遇上SAP,展翅翱翔的雄鹰飞向了更高的天空
- 地图坐标的转换与说明
- 分享一个铁死亡数据库
- 青云QingCloud发布重量级产品 云计算赋能企业核心业务
- Tomcat三种部署方式