python写订单管理系统要多久_Django订单管理

# https://www.cnblogs.com/yloven/p/6964936.html

from django.db import transaction

#首先要导包

@transaction.atomic

@innerdef list(request):

post= request.POST

address = post.get('email')

cart_id=post.getlist('cart_id')

# 在调用一个view里面的方法之前,django开始一个事务如果发出的响应没有问题,

# Django就会提交这个事务。如果在view这里产生一个异常,Django就会回滚这次事务

# 开启事物保护

sid = transaction.savepoint()

try:

# 1.建立新的订单信息

# transaction.savepoint_commit(sid)  #事物的提交

order = OrderInfo()

now = datetime.now()

uid = request.session['user_id']

order.oid=('%s%d')%(now.strftime('%Y%m%d%H%M%S'), uid)  # 拼接字符代码

order.user_id=uid

order.udate = now

order.oaddress = address

print(order.oaddress,order.udate,order.user_id,order.oid,uid,now)

order.otatal=0

order.save()

total=0  # 计算好的总价

for cid in cart_id:

cart=CartInfo.objects.get(pk=cid)

# 2.判断库存,减少数据库库存

if cart.goods.gkucun>=cart.count:

cart.goods.gkucun-=cart.count

cart.goods.save()        # 连表保存数据库的值

# 把信息添加订单

datail = OrderDetailInfo()

datail.order=order        # 保存的外键对应ID

datail.goods=cart.goods          #保存外键对应Id

datail.price=cart.goods.gprice

datail.count=cart.count

# print(order,cart.goods,cart.goods.gprice)

datail.save()

# 计算总价

total+=cart.goods.gprice*cart.count

# 购车用完了删除

cart.delete()

else: # 购车数量比库存大

transaction.savepoint_rollback(sid) #事务的回滚

return redirect('/cart/')

order.ototal = total

print(total)

order.save() # 计算完了 保存总价格

transaction.savepoint_commit(sid) #提交事务的逻辑

return redirect('/user/order/1')

except :

# 发生异常就回滚

transaction.savepoint_rollback(sid)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值