如何在Django中接受和拒绝订单

如何在Django中接受和拒绝订单,django,django-views,Django,Django Views,我想接受和拒绝订单。如果订单将接受它显示将保存在数据库中,如果订单被拒绝它显示将删除,但我正在尝试,但什么也没有发生 View.py class OrderDecision_View(TemplateView): template_name = "purchase/allOrders.html" def get(self, request, *args, **kwargs): allOrders = Order.objects.all()

我想接受和拒绝订单。如果订单将接受它显示将保存在数据库中,如果订单被拒绝它显示将删除,但我正在尝试,但什么也没有发生

View.py

class OrderDecision_View(TemplateView):

    template_name = "purchase/allOrders.html"

    def get(self, request, *args, **kwargs):
        allOrders = Order.objects.all()
        args = {"allOrders": allOrders}
        return render(request, self.template_name, args)

    def post(self, request):
        orderId = self.request.GET.get("order_id")
        statusAccept = self.request.GET.get("acceptButton")
        statusReject = self.request.GET.get("rejectButton")

        if statusAccept:
            try:
                orderDecision = OrderRequest(
                    order_id=orderId,
                    order_status=statusAccept,
                )
                orderDecision.save()
                return redirect("orderDecision")
            except Exception as e:
                return HttpResponse("failed{}".format(e))

        if statusReject:
            remove = Order.objects.get(pk=statusReject.id)
            delete(remove)
模板

 {% block content %}
    {% for allorder in allOrders %}
    {{ allorder.id }}

    {{ allorder.orderProduct.product.name }}
    {{ allorder.orderProduct.quantity }}
    <button type="submit" name="acceptButton" value="accept"><a href="{% url 'orderDecision' %}?order_id={{ allorder.id }}">Accept</a></button>
    <button type="submit" name="rejectButton" value="reject"><a href="{% url 'orderDecision'%}?order_id={{ allorder.id }}"> Reject</a></button>
 {% endfor %}
{% endblock % }
{%block content%}
{allOrders%中allorder的百分比}
{{allorder.id}
{{allorder.orderProduct.product.name}
{{allorder.orderProduct.quantity}
{%endfor%}
{%endblock%}

将链接包装到按钮中并没有什么明智之举

<form method="POST" action="{% url 'orderDecision' %}?order_id={{ allorder.id }}">
{% csrf_token %}
<button type="submit" name="action" value="accept">Accept</button>
<button type="submit" name="action" value="reject">Reject</button>
</form>
在Python代码中


不过,您可能需要使用
UpdateView
,以避免在检索这些订单对象时遇到一些麻烦。

请使用适当的缩进来发布代码。我会更新您可能需要的代码
order.objects.get(pk=orderId).delete()
在那里。您需要
注释(Count('orderrequest\u set')。过滤器(orderrequest\u set\u count=0)
某种程度上是对queryset的添加,但这本身就是一个不同的问题。所以我为这个问题单独发布了一个问题?这将是一个好主意,是的
statusAccept = self.request.POST.get("action") == "accept"
statusReject = self.request.POST.get("action") == "reject"