130.(后端)商品添加接口实现——向多个模型添加数据

1.概述

由于一个商品可能存在多个图片,多个参数,所以,这里的添加商品接口需要关联到多张表。并且,根据前端传递的数据,多个图片和多级参数,需要去转成列表形式去遍历,具体描述请看代码展示

2.代码展示


# restful发送请求
class Goods(Resource):
    # 商品添加接口
    def post(self):
        try:
            attr_dynamic = request.form.get('attr_dynamic')
            attr_static = request.form.get('attr_static')
            cid_one = request.form.get('cid_one')
            cid_two  = request.form.get('cid_two')
            cid_three = request.form.get('cid_three')
            introduce = request.form.get('introduce')
            name = request.form.get('name')
            number = request.form.get('number')
            pics = request.form.get('pics')
            price = request.form.get('price')
            weight = request.form.get('weight')
            goods = models.Goods(name=name, number=number, price=price, weight=weight, introduce=introduce,
                            cid_one=cid_one, cid_two=cid_two, cid_three=cid_three)
            db.session.add(goods)
            db.session.commit()
            # 由于我们下面遍历时需要id,id又是自动生成的,所以先提交了这些内容得到id
            
            # pics是字符串,所以先用eval()把他转成列表的形式去遍历他;并且他是多个的,所以需要单独model去保存
            for p in eval(pics):
                tp = models.Picture(gid=goods.id, path= p )
                db.session.add(tp)
            for s in eval(attr_static):
                temp_s = models.GoodsAttr(gid = goods.id, aid=s.get('id'), val=s.get('val'), _type='static')
                db.session.add(temp_s)
            for d in eval(attr_dynamic):
                temp_d = models.GoodsAttr(gid = goods.id, aid=d.get('id'), val=d.get('val'), _type='dynamic')
                db.session.add(temp_d)
            db.session.commit()
            return to_dict_msg(200, msg='增加商品成功!!!')
        except Exception as e:
            return to_dict_msg(20000)

goods_api.add_resource(Goods, '/goods')

3.测试接口

由于这的字段过多,所以就放在下一篇文章去前端测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想成为数据分析师的开发工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值