You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django披萨店系统点击按钮更新订单模型状态字段实现咨询

实现步骤

1. 新增路由配置

在你应用的urls.py文件中添加订单状态更新的路由:

from django.urls import path
from . import views

urlpatterns = [
    # 保留原有路由不变,新增如下路由
    path('order/complete/<int:order_id>/', views.complete_order, name='complete_order'),
    # 确保你的订单列表路由设置了name为orders,示例:
    # path('orders/', views.OrderView.as_view(), name='orders'),
]

2. 新增状态更新视图函数

在views.py中添加处理订单完成请求的逻辑:

from django.shortcuts import get_object_or_404, redirect

# 保留原有代码不变,新增如下函数
def complete_order(request, order_id):
    if request.method == "POST":
        order = get_object_or_404(OrderPizza, id=order_id)
        # 仅当订单处于配送中状态时允许修改为已完成,避免重复提交
        if order.status == OrderPizza.STATUS_DELIVERED:
            # 修改订单状态为已完成
            order.status = OrderPizza.STATUS_EXECUTE
            order.save()
            # 同步更新对应骑手的完成订单数
            order.courier.count_order += 1
            order.courier.save()
    # 处理完成后跳转回订单列表页
    return redirect('orders')

3. 修改订单列表模板

更新listOrder.html中的表单部分,绑定对应订单ID、添加CSRF校验:

<tr><td>
    <form method="post" action="{% url 'complete_order' i.order.id %}">
        {% csrf_token %}
        <!-- 非配送中状态的订单按钮置灰,避免误操作 -->
        {% if i.order.status == 'Доставляется' %}
        <button type="submit">Заказ доставлен</button>
        {% else %}
        <button type="button" disabled>Заказ доставлен</button>
        {% endif %}
    </form>
</td><tr>

修改完成后重启服务即可测试功能:点击配送中订单的「Заказ доставлен」按钮,订单状态会自动更新为「Исполнен(订单已完成)」,对应骑手的完成订单数也会同步+1。

内容的提问来源于stack exchange,提问作者Яков Лукьянец

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:06:03