Python Django更改和跟踪订单状态

Python Django更改和跟踪订单状态,python,django,Python,Django,我的模型中有一个状态字段,其默认值为“进行中”。无论何时创建新订单,都会为订单提供默认值“进行中”。现在我添加了一个新功能,当客户输入订单id时,它会显示订单的状态。我想在我的功能中添加新功能,在该功能中,当客户输入order.id并单击“跟踪”时,订单状态应自动更改为“计划”,如果我稍后更新订单状态,则不应显示“计划”,而应显示我将选择的状态。我可以在我的视图功能中添加什么使其工作 models.py class Order(models.Model): name = models.

我的模型中有一个状态字段,其默认值为“进行中”。无论何时创建新订单,都会为订单提供默认值“进行中”。现在我添加了一个新功能,当客户输入订单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'),
        )```
def订单跟踪器(请求):
如果request.method==“POST”:
orderId=request.POST.get('orderId','')
尝试:
order=order.objects.filter(pk=orderId)
如果len(订单)>0:
update=Order.objects.filter(pk=orderId)
更新=[]
更新中的订单:
#将订单状态更改为计划状态
如果order.status==“正在处理”:
order.status='scheduled'
order.save()
updates.append({'status':order.status})
response=json.dumps(更新)
返回HttpResponse(响应)
其他:
返回HttpResponse(“{}”)
例外情况除外,如e:
返回HttpResponse(“{}”)
返回渲染(请求“tracker.html”)
顺便说一句,你好像收到了一份订单清单?如果您应该只获得一个订单,请使用
order.objects.get()
,如果条件不匹配,这将引发
DoesNotExist
异常

def订单跟踪器(请求):
如果request.method==“POST”:
orderId=request.POST.get('orderId','')
尝试:
order=order.objects.get(pk=orderId)
如果order.status==“正在处理”:
order.status='scheduled'
order.save()
返回JsonResponse({'status':order.status})
除:Order.DoesNotExist外:
返回JsonResponse({})
返回渲染(请求“tracker.html”)

只需分配状态并保存它。

但是如果我将状态更新为shipped,它仍然显示scheduled。只有当客户第一次输入order.id时,它才应更改为scheduled。我使用的是ajax,我希望所有订单状态的列表都能被长期保存在if语句中,在那里我更新了我的答案为什么你要返回订单列表如果你只接受订单ID,这没有意义。我正在尝试获取订单状态更改的时间表
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")
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,"tracker.html")