Элементы словаря не отображаются в шаблоне в 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

Вернуться на верх