python - 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")
解决方案
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")
推荐阅读
- python - 从 Python 中的预测 DataFrame 中选择项目预测
- php - GET 参数不为空,但我不能在 PHP 函数上使用它
- php - jQuery Datatables - 如何更改服务器端排序顺序
- go - 检查结构在运行时是否具有结构嵌入
- java - Spring Boot项目构建成功,报错
- maven - Bazel Maven SHA缓存不匹配
- c++ - 如何从 C++ 将字符串传递给 OCaml
- angular6 - 测试用例挂在错误的验证上
- excel - 自动过滤然后选择特定单元格下方的范围并选择可见单元格并删除整行
- rest - Qlik 感知工具与 InfluxDB 的集成