Django Oscar在兑换过期凭证时自动清空篮子

Django Oscar在兑换过期凭证时自动清空篮子,django,django-oscar,Django,Django Oscar,当客户将凭证应用于购物车中的某个项目,并且凭证在结账过程中或购物车内部过期时。在结帐过程中,当点击下订单时,购物车自动清空,客户收到此错误,您需要向购物篮中添加一些项目以结帐,这在检查购物篮是否为空方法期间发生 有人能帮我了解一下,德扬戈·奥斯卡的哪一部分可能会以如此激烈的方式修改这辆车吗。我最初的想法是,购物车被清空了,因为某个oscar组件正在尝试删除凭证,并且正在删除购物车项目。但是在更多的检查中,我发现凭证已成功删除,但购物车项目可能仅在PaymentDetailsView中删除 我没有

当客户将凭证应用于购物车中的某个项目,并且凭证在结账过程中或购物车内部过期时。在结帐过程中,当点击
下订单时,购物车自动清空,客户收到此错误,
您需要向购物篮中添加一些项目以结帐
,这在
检查购物篮是否为空方法期间发生

有人能帮我了解一下,德扬戈·奥斯卡的哪一部分可能会以如此激烈的方式修改这辆车吗。我最初的想法是,购物车被清空了,因为某个oscar组件正在尝试删除凭证,并且正在删除购物车项目。但是在更多的检查中,我发现凭证已成功删除,但购物车项目可能仅在
PaymentDetailsView
中删除


我没有支付详细信息视图的代码。几天前,我作为一名Django开发人员开始了这项工作,我被扔进了这个巨大的Django-oscar代码库,我对它完全不熟悉。我不允许在网上发布任何代码。我不知道该怎么办,也不想被解雇。任何帮助都将不胜感激

我仍然不知道是什么导致了这个错误,但我想出了这个解决方案。单击“下订单”时,将触发
PaymentDetailsView
类,处理所有数据的第一个函数是
submit
函数。因此,您可以手动检查
请求中的凭证
,并手动删除凭证

# removing expired vouchers:
for voucher in self.request.basket.vouchers.all():
     if voucher.is_expired() or not voucher.is_available_to_user(user=self.request.basket.owner)[0]:
        self.request.basket.vouchers.remove(voucher)
        messages.error(self.request,_("The '%(code)s' voucher has expired") % {'code': voucher.code})

相关-(我知道那是你,但是在这里有链接很好,对未来的用户来说)我昨天才知道发生了什么,我会在这里和Github上发布我的答案。干杯