zoukankan      html  css  js  c++  java
  • [ flask ] flask-restful 实现嵌套的有关系的输出字段

    问题描述:

    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

  • 相关阅读:
    104. 二叉树的最大深度
    1120. 子树的最大平均值
    1121. 将数组分成几个递增序列
    1118. 一月有多少天
    1110. 删点成林
    102. 二叉树的层次遍历
    145. 二叉树的后序遍历
    94. 二叉树的中序遍历
    144. 二叉树的前序遍历
    剑指offer-0x04
  • 原文地址:https://www.cnblogs.com/remly/p/12996008.html
Copyright © 2011-2022 走看看