如果管理员更改了如何更新模板中的订单状态

时间:2020-07-22 02:03:49

标签: django django-templates

嗨,我有一个初学者的问题

我有一个电子商务项目,并且我的BooleanField的订单状态不同。我希望能够在从管理员更改后向用户显示订单状态。

这是模型。py

class Order(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             on_delete=models.CASCADE)
    ref_code = models.CharField(max_length=20, blank=True, null=True)
    ordered = models.BooleanField(default=False)
    items = models.ManyToManyField(OrderItem)
    ordered_date = models.DateTimeField()
    out_for_delivery = models.BooleanField(default=False)
    received = models.BooleanField(default=False)

这是模板:

            {% for order in orders %}
                    Order Reference: {{order.ref_code}} <br>
                    Ordered on: {{order.ordered_date}}<br>
                    Order Status:
                        {% if order is out_for_delivery %}
                    Order is out for delivery
                        {% else if order is received %}
                    Order is received
                        {% endif %}
            {% endfor %}

这是views.py

class OrderList(LoginRequiredMixin, ListView):
    model = Order
    template_name = "user_orders.html"
    context_object_name = 'orders'
    paginate_by = 2
    ordering = ['-ordered_date']
    queryset = Order.objects.filter(ordered=True).order_by('-ordered_date')

    def get_queryset(self):
        return Order.objects.filter(user=self.request.user, ordered=True).order_by('-ordered_date')

谢谢大家

1 个答案:

答案 0 :(得分:1)

您应用了错误的if-else条件:

模板

value.toUpperCase()

否则,我建议不要使用太多布尔值作为状态。 您可以为此选择一个字段

模型

{% for order in orders %}
    Order Reference: {{order.ref_code}} <br>
    Ordered on: {{order.ordered_date}}<br>
    Order Status:
        {% if order.out_for_delivery %}
    Order is out for delivery
        {% elif order.received %}
    Order is received
        {% endif %}
{% endfor %}

所以您可以直接在模板中显示它

status = models.CharField(max_length=50,choices=[('pending','Pending'),('ofd','Out For Delivery'),('recieved','Recieved')],default='pending')