Элементы словаря не отображаются в шаблоне в django
Я собрал данные из двух таблиц Orders и Purchases (объединенные) и сохранил их в словаре, когда я печатаю qty на консоли, он дает мне значение, но когда я пытаюсь вывести значения на шаблоне, они не отображаются, однако столбцы из таблицы orders, такие как имя фамилия статус адрес отображаются на шаблоне, но qty и продукт из таблицы purchases не отображаются на шаблоне, но могут быть легко выведены на консоли, кто-нибудь может помочь? Models.py
Dispatcher = models.ForeignKey(Dispatchers , null=True, on_delete=models.SET_NULL )
Firstname = models.CharField(max_length=200 , null=True)
Lastname = models.CharField(max_length=200 , null=True)
Email = models.CharField(max_length=200 , null=True)
Address = models.CharField(max_length=200 , null=True)
Country = models.CharField(max_length=200 , null=True)
State = models.CharField(max_length=200 , null=True)
status = models.CharField(max_length=200 , null=True)
def __str__(self):
return self.Lastname
class purchases(models.Model):
orders_id = models.ForeignKey(Orders , null=True, on_delete=models.SET_NULL )
product = models.CharField(max_length=200 , null=True)
qty = models.CharField(max_length=200 , null=True)
price = models.CharField(max_length=200 , null=True)
def __str__(self):
return self.product
файлviews.py
dispatcherOrders = {}
orders = request.user.dispatchers.orders_set.all()
for order in orders:
dispatcherOrders[order] = purchases.objects.get(orders_id = order.id)
print(dispatcherOrders[order].qty)
return render(request , 'dispatcherOrders.html',{'dispatcherOrders' : dispatcherOrders})
dispatcherOrders.html
{%for Orders in dispatcherOrders%}
<tr>
<th scope="row">1</th>
<td>{{Orders.Firstname}}</td>
<td>{{Orders.Lastname}}</td>
<td>{{Orders.Address}}</td>
<td>{{Orders.product}}</td>
<td>{{Orders.qty}}</td>
<td>{{Orders.status}}</td>
</tr>
{% endfor %}
В вашем коде dispatcherOrders
ключами словаря являются порядки, а значениями словаря являются purchases
:
dispatcherOrders[order] = purchases.objects.get(orders_id = order.id)
пока вы итерируете только по ключам словаря, приказы:
{%for Orders in dispatcherOrders%}
Чтобы получить информацию из покупок, выполните итерацию элементов словаря.
Так что код вашего шаблона должен быть похож на
{%for Orders, Purchase in dispatcherOrders.items %}
<tr>
<th scope="row">1</th>
<td>{{Orders.Firstname}}</td>
<td>{{Orders.Lastname}}</td>
<td>{{Orders.Address}}</td>
<td>{{Purchase.product}}</td>
<td>{{Purchase.qty}}</td>
<td>{{Purchase.status}}</td>
</tr>
{% endfor %}
Вот как работает .items
: https://stackoverflow.com/a/6285769/3694363