问题背景:
我们从redis中拿到商品的id,以及它的数量,然后去数据库中取到这个id的商品,但是问题是,数据库中的商品没有购物车中要展示的属性,比如商品的数量,商品价格小计。
如下图:
如何解决这个问题呢?
先从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)