【问题标题】:How to add "Return Product" after "Product Delivery" functionality in Django Oscar如何在 Django Oscar 中的“产品交付”功能后添加“退货”
【发布时间】:2019-06-20 07:43:27
【问题描述】:

我想在 Django Oscar 中的“产品交付”功能之后添加“退货”。在settings.py 我添加了下面的代码。

OSCAR_ORDER_STATUS_PIPELINE = {
'Pending': ('Processing', 'Cancelled',),
'Processing': ('Shipped', 'Cancelled',),
'Shipped': ('Delivered', 'Return', 'Returned', 'Cancelled',),
'Returned': ('Return', 'Returned',),
'Delivered': (),
'Cancelled': (),
}

OSCAR_ORDER_STATUS_CASCADE = {
  'Processing': 'In progress',
  'Shipped': 'Shipped',
  'Delivered': 'Delivered',
  'Returned': 'Returned',
 'Cancelled': 'Cancelled'
}

我已经编写了 Ajax 函数来更改订单从“已交付”到“退货”后的状态。下面是函数。

@csrf_exempt
def return_order(request):
# Return Order after Delivery
  if request.is_ajax():
    data = request.body.decode('utf-8')
    try:
        order = Order.objects.get(id=int(data))
        EventHandler().handle_order_status_change(order=order, new_status='Return')
        return HttpResponse(json.dumps({'status': 'True', 'msg': 'OK'}))
    except Exception as e:
        print(e)
        return HttpResponse(json.dumps({'status': 'False', 'msg': 'Error'}))

我收到类似这样的错误 'Return' is not a valid status for order 100213 (current status: 'Delivered')

【问题讨论】:

    标签: django django-views django-oscar


    【解决方案1】:

    OSCAR_ORDER_STATUS_PIPELINE 的目的是为订单定义一组有效的下一个状态。该字典中的每个键都映射到状态列表,订单可以从该状态更改为。

    在您的情况下,您有:'Delivered': (), - 这意味着订单在交付后无法更改为有效状态。已交付是最终状态,已取消也是如此。

    如果您想允许从Delivered 更改为Return,则需要将此行更改为:

    'Delivered': ('Return',),
    

    【讨论】:

      猜你喜欢
      • 2015-07-12
      • 1970-01-01
      • 2018-10-06
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-28
      • 2018-08-27
      • 1970-01-01
      相关资源
      最近更新 更多