def cart(request):#購物車頁面user_id=request.COOKIES.get("user_id")goods_list=Cart.objects.filter(user_id=user_id).order_by("-id")if request.method=="POST":#cart頁提交訂單post_data=request.POSTcart_data=[]#收集前端傳遞過來的商品cart_ids=[]for k,v in post_data.items():if k.startswith("goods_"):#判斷傳過來的訂單idprint(v,"v",k,"k")cart_data.append(Cart.objects.get(id=int(v)))cart_ids.append(int(v))goods_count=sum([int(i.goods_number) for i in cart_data])#提交過來的數據總的數量#goods_total=sum([int(i.goods_total) for i in cart_data])#訂單的總價**goods_total=Cart.objects.filter(id__in=cart_ids).aggregate(Sum("goods_total"))#得到一個字典**goods_total=goods_total["goods_total__sum"]#goods_store=([str(i.goods_store) for i in cart_data])#保存訂單order=Order()order.order_id=setOrderId(str(user_id),str(goods_count),"2")#訂單中有多個商品或者多個店鋪,使用goods_count來代替商品id,使用2代表店鋪idorder.goods_count=goods_countorder.order_user=Buyer.objects.get(id=user_id)order.order_price=goods_totalorder.order_status=1order.save()#保存訂單詳情#這里的detail是購物車里的數據實例,不是商品的實例for detail in cart_data:order_detail=OrderDetail()order_detail.order_id=order#order是一條訂單數據order_detail.goods_id = detail.goods_idorder_detail.goods_name = detail.goods_nameorder_detail.goods_price = detail.goods_priceorder_detail.goods_number = detail.goods_numberorder_detail.goods_total = detail.goods_totalorder_detail.goods_store = detail.goods_storeorder_detail.goods_image = detail.goods_pictureorder_detail.save()url="/buyer/place_order/?order_id=%s"%order.idreturn HttpResponseRedirect(url)return render(request,"buyer/cart.html",locals())