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 类型相关推荐

  1. Es的针对于nested类型的多重子聚合

    1.业务背景 一家店会由多个人维护,一家店会绑定一个城市,现有需求需要找到某个人的常驻城市,具体需求如下,先找到这个人的所有店,再根据城市聚合店,算出店的数量,取店数量最多的城市,如果有多个城市的店数 ...

  2. ES实现nested类型聚合以及子聚合排序

    ES实现nested类型聚合以及子聚合排序 ES实现nested类型聚合以及子聚合排序 需求业务说明 品牌近7天销量 品牌近7日销量趋势 指定某个sku日期范围销量趋势和价格趋势 电商商品日销量索引m ...

  3. Nested嵌套对象类型还挺实用

    上一篇文章中,我们学习了Join类型的父子文档,今天继续学习一下嵌套文档,毕竟嵌套文档也是Elasticsearch推荐的,首先我们看下面这条语句 PUT word_document/_doc/1 { ...

  4. 转:elasticsearch nested嵌套查询

    转自: [弄nèng - Elasticsearch]DSL入门篇(七)-- Nested类型查询,聚合_司马缸砸缸了-CSDN博客文章目录1. nested query2. nested 对象聚合项 ...

  5. 嵌套查询和连接查询的效率_Elasticsearch 7.x Nested 嵌套类型查询 | ES 干货

    一.什么是 ES Nested 嵌套 Elasticsearch 有很多数据类型,大致如下: 基本数据类型: string 类型.ES 7.x 中,string 类型会升级为:text 和 keywo ...

  6. Elasticsearch 嵌套类型nested

    1.背景介绍 我们在使用Elasticsearch做搜索引擎的时候有可能会遇到跨domain查询的场景,比如做一个学生课程管理系统,搜一个学生的名字,像知道该学生的选课情况. 当然解决问题的方法有很多 ...

  7. 4-Elasticsearch字段类型

    Elasticsearch字段类型 字段类型分类 常用类型 binary:存储编码为Base64的字符串或二进制值 boolean:存储true或false keyword:存储时不会分词处理,适合统 ...

  8. Elasticsearch中字段类型(Field Type)详解

    ElasticSearch 7.7 字段类型(Field datatype)详解 字符串, object, 数值, 日期, 数组, 0x00 字符串: text, keyword 5.0以后,stri ...

  9. elasticsearch数据类型--nested

    前面写到了object数据类型,这里来说说nested.按照官方文档的说法,nested是特殊的object类型,弥补了object对象不能单独作为整体进行检索的缺陷.为了达到这个目的,nested在 ...

  10. ElasticSearch 动态映射和静态映射,以及四种字段类型

    文章目录 1.ElasticSearch 映射 1.1 映射分类 1.2 类型推断 2.ElasticSearch 字段类型 2.1 核心类型 2.1.1 字符串类型 2.1.2 数字类型 2.1.3 ...

最新文章

  1. Java中 this关键字详解
  2. 陪孩子一起学python第二季_陪伴作文开头和结尾
  3. Python知识:生成声波并显示
  4. 随机取6位数字或字母方法
  5. 中国中草药提取物市场需求容量与投资价值预测报告2022年
  6. 为什么声明性编码使您成为更好的程序员
  7. Java面试之锁-公平锁和非公平锁
  8. Java NIO之缓冲区Buffer
  9. android 动态透明图片下载,动态透明壁纸软件下载-动态透明壁纸 安卓版v1.110-PC6安卓网...
  10. Struts2-boobooke-概述
  11. Xilinx_JESD204B
  12. [转][酷酷的滕]我爱你语录
  13. 让计算机休眠的命令,电脑怎么取消休眠?关闭休眠命令是什么?
  14. 《机器学习》课后习题 3.4 选择两个 UCI 数据集,比较 10 折交叉验证法和留 法所估计出的对率回归的错误率.
  15. redis压测工具redis-benchmark
  16. 当拓普遇上SAP,展翅翱翔的雄鹰飞向了更高的天空
  17. 地图坐标的转换与说明
  18. 分享一个铁死亡数据库
  19. 青云QingCloud发布重量级产品 云计算赋能企业核心业务
  20. Tomcat三种部署方式

热门文章

  1. 德怀特·艾森豪威尔(1890-1969)美国第34任总统,陆军五星上将。
  2. 完美平台反复正在连接至服务器,完美世界无法连接服务器是什么原因
  3. 教程 |「川言川语」:用神经网络RNN模仿特朗普的语言风格
  4. 下一代Web服务的基础框架——F2F俱乐部SOA系列活动
  5. PAT 7-14 电话聊天狂人
  6. <4>STM32F103基础知识
  7. Java注解(Annotation)
  8. iPhone7 更新iOS13.3软件闪退
  9. win7 定时开关机命令
  10. 为什么 call 比 apply 快?