Невозможно получить данные из представления в шаблон django
Problem as in title. I can not get data from view to template I get <QuerySet [{'id': 3, 'order_user_id': 13, 'ordered': False, 'total': Decimal('0.00')}]>
when i use {{ order }}
. I would like to get OrderedItems and Total from Order Model. How can i do that?
views.py
def cart(request):
order = Order.objects.values()
context = {'order': order}
return render(request, 'shop/cart.html', context)
models.py:
class OrderItem(models.Model):
order_item = models.ForeignKey(Item, on_delete=CASCADE, null=True)
quantity = models.IntegerField(default=1)
class Order(models.Model):
order_user = models.OneToOneField(User, on_delete=CASCADE)
order_items = models.ManyToManyField(OrderItem)
ordered = models.BooleanField(default=False)
total = models.DecimalField(default=0.00, decimal_places=2, max_digits=11)
class Item(models.Model):
title = models.CharField(max_length=150)
price = MoneyField(
decimal_places=2,
default=0,
default_currency='USD',
max_digits=11,
)
cart.html
{% extends 'shop/base.html' %}
{% block content %}
<div class="container">
{% include 'shop/navbar.html' %}
<div>
{{order}}
{{order.total}}
</div>
</div>
{% endblock content %}
Вы должны использовать цикл for
для итерации по элементам.
Сначала измените это: order = Order.objects.values()
на order = Order.objects.all()
{% extends 'shop/base.html' %}
{% block content %}
<div class="container">
{% include 'shop/navbar.html' %}
<div>
{% for item in order %}
<li>User: {{ item.order_user }}<li/>
<li>Items:
{% for order_item in item.order_items %}
<li>{{ order_item }}</li>
{% endfor %}
<li/>
<li>Is ordered: {{ item.ordered }}<li/>
<li>Total: {{ item.total }}<li/>
{% endfor %}
</div>
</div>
{% endblock content %}