找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 100|回复: 0

[求助] 基于Django框架开发项目出错

1

主题

1

帖子

1

积分

贫民

积分
1
随心_ 发表于 2019-5-10 21:33:37 | 显示全部楼层 |阅读模式
出错后台代码
class OrderCommitView(View):
    """创建订单"""
    def post(self, request):
        """创建订单"""
        # 获取登录的用
        user = request.user
        if not user.is_authenticated:
            # 用户未登录
            return JsonResp**e({'res': 0, 'errmsg': '用户未登录,请先登录再进行操作'})
        # 获取参数
        addr_id = request.POST.get('addr_id')
        pay_method = request.POST.get('pay_method')
        sku_ids = request.POST.get('sku_ids')
        # 校验数据
        if not all([addr_id, pay_method, sku_ids]):
            return JsonResp**e({'res': 1, 'errmsg': '参数不完整'})
        # 校验支付方式
        if pay_method not in OrderInfo.PAY_METHODS.keys():
            return JsonResp**e({'res': 2, 'errmsg': '支付方式不存在'})
        # 校验地址
        try:
            addr = Address.objects.get(id=addr_id)
        except Address.DoesNotExist:
            return JsonResp**e({'res': 3, 'errmsg': '收货地址不存在'})
        # 业务处理:创建订单
        # 组织参数
        # 订单id:20190509200343(创建订单的时间)+用户id
        order_id = datetime.now().strftime('%Y%m%d%H%M%S')+str(user.id)
        # 运费
        transit_price = 10
        # 总数目和总金额
        total_count = 0
        total_price = 0
        # 想df_order_info表中添加一条记录
        order = OrderInfo.objects.create(order_id=order_id,
                                         user=user,
                                         addr=addr,
                                         pay_method=pay_method,
                                         total_count=total_count,
                                         total_price=total_price,
                                         transit_price=transit_price)
        # 用户的订单中有几件商品就需要向df_order_goods表中添加几条记录
        conn = get_redis_connection('default')
        cart_key = 'cart_%d' % user.id
        sku_ids = sku_ids.split(',')
        sku_ids.append(-1)
        for sku_id in sku_ids:
            # 获取商品的信息
            try:
                sku = GoodsSKU.objects.get(id=sku_id)
            except GoodsSKU.DoesNotExist:
                return JsonResp**e({'res': 4, 'errmsg': '商品不存在'})
            # 从redis中获取用户所需购买的商品的数量
            count = conn.hget(cart_key, sku_id)
            # 向df_order_goods表中添加一条记录
            OrderGoods.objects.create(order=order,
                                      sku=sku,
                                      count=count,
                                      price=sku.price)
            # 更新商品的库存和销量
            sku.stock -= int(count)
            sku.sales += int(count)
            sku.save()
            # 累加计算订单的总数量和总金额
            amount = sku.price*int(count)
            total_count += int(count)
            total_price += amount
        # 更新订单信息表中的总数量和总金额
        order.total_count = total_count
        order.total_price = total_price
        order.save()
        # 买完商品后清除用户购物车中的相关记录
        conn.hdel(cart_key, *sku_ids)

        # 返回应答
        return JsonResp**e({'res': 5, 'message': '订单创建成功'})
出错原因
django.db.utils.IntegrityError: (1048, "Column 'count' cannot be null")
[10/May/2019 21:14:59] "POST /order/commit HTTP/1.1" 500 24353


但是我通过调试得到



调试_01

调试_01
F10W]BMKEJYG18S9Y2HO0)C.png

前两个都是正常的

O1PZAG(EC4P(G@0`$GEK5QL.png 90N~%G3KTKYE]HPNWQVSA%E.png
通过第三张图可以看出 明明获取到值了,可是到写入redis数据库时却变成了None类型的

前台页面
6R@I9]V(S2K5MA26[0$@LDO.png


不是很明白,希望各位大佬 救救孩子吧~


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表