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

  • 相关阅读:
    1021. Deepest Root (25)
    1013. Battle Over Cities (25)
    h5ai目录列表优化
    利用chrome调试手机网页
    跨域相关配置
    HttpClient服务端发送http请求
    滚动条样式优化(CSS3自定义滚动条样式 -webkit-scrollbar)
    javaScript复制粘贴
    效率工作
    spring boot实现文件上传下载
  • 原文地址:https://www.cnblogs.com/remly/p/12996008.html
Copyright © 2011-2022 走看看