问题描述:

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

最新文章

  1. 深入学习HBase架构原理
  2. C++中重定义的问题——问题的实质是声明和定义的关系以及分离式编译的原理
  3. c#方法重载,可选参数,命名参数。
  4. JS--中的 Cookie 与存储
  5. 【html】【18】高级篇--下拉列表[竖向手风琴]
  6. RHEL双网卡绑定
  7. 利用Trie树对字符串集合进行排序并计算特征值
  8. winzip15.0许可证
  9. Openjudge-计算概论(A)-短信计费
  10. [Linux] PHP程序员玩转Linux系列-自动备份与SVN
  11. cs231n spring 2017 lecture1 Introduction to Convolutional Neural Networks for Visual Recognition 听课笔记
  12. BZOJ_1316_树上的询问_点分治
  13. windows安装pycrypto报错
  14. Kibana安全特性之权限控制
  15. Spark源码系列:DataFrame repartition、coalesce 对比
  16. Jmeter也能IP欺骗!
  17. Python自动化开发 - 字符编码、文件和集合
  18. eclipse常用插件介绍
  19. express 3.5 Err: request aborted
  20. cdoj841-休生伤杜景死惊开 (逆序数变形)【线段树 树状数组】

热门文章

  1. 线程开启的第一种方法:通过创建Thread的子类的对象的方式
  2. ActiveMQ(三)——理解和掌握JMS(1)
  3. opencv学习(四)——轨迹栏作为调色板
  4. Mysql脚本 优化检测
  5. PowerDotNet平台化软件架构设计与实现系列(07):数据同步平台
  6. CF254A Cards with Numbers 题解
  7. 【科普】.NET6 泛型
  8. bootstrap栅格例子
  9. myeclipse 安装spket
  10. Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnl