如何动态地给一商品增加属性

问题背景:

我们从redis中拿到商品的id,以及它的数量,然后去数据库中取到这个id的商品,但是问题是,数据库中的商品没有购物车中要展示的属性,比如商品的数量,商品价格小计。

如下图:
如何动态地给一商品增加属性_第1张图片

如何解决这个问题呢?

先从redis中拿到这个用户的所有商品列表,列表里是字典,字典有两个参数:商品id,以及这个商品id对应的数目。

cart_dict = conn.hgetall(cart_key)

很显然,这个列表不能满足我们的要求。
所以先建立一个空的列表:

skus = []

然后遍历cart_dict列表,它是一个字典,所以可以每次遍历,加一个有新属性的商品到skus中

        for sku_id, count in cart_dict.items():
            # 根据商品的id获取商品的信息
            sku = GoodsSKU.objects.get(id=sku_id)
            # 计算商品的小计
            amount = sku.price*int(count)
            # 动态给sku对象增加一个属性amount, 保存商品的小计
            sku.amount = amount
            # 动态给sku对象增加一个属性count, 保存购物车中对应商品的数量
            sku.count = count
            # 添加
            skus.append(sku)

你可能感兴趣的:(生鲜项目)