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



嗨,我有一个初学者问题

我有一个电子商务项目,我有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 %}

这是视图.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')

谢谢大家

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

模板

{% 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')

所以你可以直接在这样的模板中显示

{{order.get_status_display}}

最新更新