[ flask ] flask-restful 实现嵌套的有关系的输出字段
2024-09-04 05:42:44
问题描述:
1. 先说明数据关系:有用户,和菜谱。一个用户可以拥有多个菜谱:一对多的关系
2. resources/users.py 的输出字段:
user_fields = {
'id':fields.Integer,
'username':fields.String,
'email':fields.String,
'avatar':fields.String
}
3. resources/cookbooks.py 的输出字段:
cookbook_fields = {
'id':fields.Integer,
'name':fields.String,
'description':fields.String,
'imageUrl':fields.String,
'myfoods':fields.String,
'step':fields.String,
'author':????
}
如上所述,我想返回一个菜谱的时候同时返回这个菜谱的作者信息(见上面高亮部分),该如何实现呢?
具体实现:
from flask_restful import Resource,fields,marshal_with,reqparse,inputs,marshal
from app.api.resources.users import user_fields class AuthorRaw(fields.Raw):
def output(self,key,cookbook):
return marshal(cookbook.users,user_fields) cookbook_fields = {
'id':fields.Integer,
'name':fields.String,
'description':fields.String,
'imageUrl':fields.String,
'myfoods':fields.String,
'step':fields.String,
'author':AuthorRaw
}
如上所示,我们定义 output(self,key,cookbook)方法来覆盖父类的output方法
其中,第二个参数cookbook指向Cookbook的实例,第一个参数是实例中的一个字段
最终效果:
备注:
用 fields.Nested 啊,它不香么
详情见:https://github.com/LongchuanYu/wefoods_backend
最新文章
- 深入学习HBase架构原理
- C++中重定义的问题——问题的实质是声明和定义的关系以及分离式编译的原理
- c#方法重载,可选参数,命名参数。
- JS--中的 Cookie 与存储
- 【html】【18】高级篇--下拉列表[竖向手风琴]
- RHEL双网卡绑定
- 利用Trie树对字符串集合进行排序并计算特征值
- winzip15.0许可证
- Openjudge-计算概论(A)-短信计费
- [Linux] PHP程序员玩转Linux系列-自动备份与SVN
- cs231n spring 2017 lecture1 Introduction to Convolutional Neural Networks for Visual Recognition 听课笔记
- BZOJ_1316_树上的询问_点分治
- windows安装pycrypto报错
- Kibana安全特性之权限控制
- Spark源码系列:DataFrame repartition、coalesce 对比
- Jmeter也能IP欺骗!
- Python自动化开发 - 字符编码、文件和集合
- eclipse常用插件介绍
- express 3.5 Err: request aborted
- cdoj841-休生伤杜景死惊开 (逆序数变形)【线段树 树状数组】
热门文章
- 线程开启的第一种方法:通过创建Thread的子类的对象的方式
- ActiveMQ(三)——理解和掌握JMS(1)
- opencv学习(四)——轨迹栏作为调色板
- Mysql脚本 优化检测
- PowerDotNet平台化软件架构设计与实现系列(07):数据同步平台
- CF254A Cards with Numbers 题解
- 【科普】.NET6 泛型
- bootstrap栅格例子
- myeclipse 安装spket
- Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnl