问题描述:
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 啊,它不香么