首页 > 解决方案 > Django 更改和跟踪订单状态

问题描述

我的模型中有一个状态字段,默认值正在进行中。每当创建新订单时,都会为订单提供默认值 in-progress。现在我添加了一个新功能,当客户输入订单 ID 时,它会显示订单状态。我想向我的函数添加新功能,当客户输入 order.id 并单击跟踪时,订单状态应自动更改为已安排,如果我稍后更新订单状态,它不应显示日程安排,而是我将要显示的状态选择。我可以在我的视图函数中添加什么来使其工作?

models.py

class Order(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=100
   status = models.CharField(max_length = 100, choices = choices) default="In Progress")
choices = (('Received', 'Received'),
        ('Scheduled', 'Scheduled'), 
        ('Shipped', 'Shipped'),
        ('In Progress','In Progress'),
        )```
views.py

def order_tracker(request):
    if request.method=="POST":
        orderId = request.POST.get('orderId', '')
        try:
            order=Order.objects.filter(pk=orderId)

            if len(order)>0:
                update = Order.objects.filter(pk=orderId)
                updates = []
                for order in update:
                    order.status = 'Scheduled'
                    order.save()
                    updates.append({'status' : order.status})
                    response = json.dumps(updates)
                    return HttpResponse(response)
            else:
                return HttpResponse('{}')
        except Exception as e:
            return HttpResponse('{}')
    return render(request,"status/track.html")

标签: pythondjango

解决方案


def order_tracker(request):
    if request.method=="POST":
        orderId = request.POST.get('orderId', '')
        try:
            order=Order.objects.filter(pk=orderId)

            if len(order)>0:
                update = Order.objects.filter(pk=orderId)
                updates = []
                for order in update:
                    # change order status to scheduled
                    if order.status == 'processing':
                        order.status = 'scheduled'
                        order.save()
                    updates.append({'status' : order.status})
                    response = json.dumps(updates)
                    return HttpResponse(response)
            else:
                return HttpResponse('{}')
        except Exception as e:
            return HttpResponse('{}')
    return render(request,"tracker.html")

顺便说一句,你似乎想要一份订单清单?如果您应该只获得一份订单,请使用,如果条件不匹配Order.objects.get(),则会引发异常。DoesNotExist

def order_tracker(request):
    if request.method=="POST":
        orderId = request.POST.get('orderId', '')
        try:
            order=Order.objects.get(pk=orderId)
            if order.status == 'processing':
                order.status = 'scheduled'
                order.save()
            return JsonResponse({'status' : order.status})
        except: Order.DoesNotExist:
            return JsonResponse({})
    return render(request,"tracker.html")

推荐阅读