Falsk框架实现一对多查询

Falsk框架实现一对多查询

  1. 数据库表在这里插入图片描述
  2. 模型
class Cate(db.Model):
    __tablename__ = 'cate'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(15), nullable=False)
    # 增加一个字段
    brand = db.relationship('Brand', backref='brand')

    def __str__(self):
        return self.name
class Brand(db.Model):
    __tablename__ = 'brand'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(15), nullable=False)
    cate_id = db.Column(db.Integer, db.ForeignKey('cate.id'), nullable=False)


    def __str__(self):
        return self.name

3.实现查询需要注意得点

在这里插入图片描述

4.通过商品查询到商品得分类

class AuthorName(fields.Raw):
    def format(self, value):
        return value.name,value.id

cate_fields = {
    'id':fields.Integer,
    'name':fields.String,
    'cate_id':fields.Integer,
    'brand': AuthorName(attribute='brand'),
}
class CateResource(Resource):
    @marshal_with(cate_fields)
    def get(self):
        brands = Brand.query.all()
        return brands


api.add_resource(CateResource, '/cate')

5.通过postman测试得到的数据

[
    {
        "id": 1,
        "name": "Java编程",
        "cate_id": 1,
        "brand": [
            "电子书刊",
            1
        ]
    },
    {
        "id": 2,
        "name": "mysql优化",
        "cate_id": 1,
        "brand": [
            "电子书刊",
            1
        ]
    },
    {
        "id": 3,
        "name": "电饭煲",
        "cate_id": 2,
        "brand": [
            "家用电器",
            2
        ]
    },
    {
        "id": 4,
        "name": "欧莱雅",
        "cate_id": 3,
        "brand": [
            "个户化妆",
            3
        ]
    },
    {
        "id": 5,
        "name": "小米11",
        "cate_id": 4,
        "brand": [
            "手机通讯",
            4
        ]
    }
]

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值