Отображение внешнего ключа Django на веб-странице

#django #django-models #django-views

#django #django-модели #django-просмотры

Вопрос:

У меня есть три модели.

 class Supplier(models.Model):
name = models.CharField(max_length=200, null=True)


class Order(models.Model):
supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE)


class Product(models.Model):
supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE, null=True, blank=True)
on_order = models.ForeignKey(Order, on_delete=models.CASCADE, null=True, blank=True)
 

Я могу отобразить таблицу всех продуктов заданного порядка. Однако, похоже, я не могу отобразить имя этого поставщика на странице html, например <h4> Supplier: {{order.supplier}}</h4>

это представление:

 def PurchaseOrder(request, pk_order):
    orders = Order.objects.get(id=pk_order)
    products = Product.objects.filter(
    on_order_id=pk_order).prefetch_related('on_order')
    total_products = products.count()
    supplier = Product.objects.filter(on_order_id=pk_order).prefetch_related('on_order')

context = {
    'supplier': supplier,
    'products': products,
    'orders': orders,
    'total_products': total_products, }

return render(request, 'crmapp/purchase_order.html', context)
 

вот мой шаблон:

 {% extends 'crmapp/base.html' %}
{% load static %}
{% block content %}

<div class='main-site>'>
<h4> Supplier: {order.supplier}}</h4> **<----Does not work**
<h5>Order Number: {{order.id}}</h5> **<----Does not work**
<h5>Created on: {{order.date_created | date:"d/m/Y"}}</h5> **<----Does not work**
<h6>Total Items on Order: {{total_products}}</h6>

      <input type="search" placeholder="Search any field..." class="form-control search-input" data-table="customers-list"/>
      <table class="table table js-sort-table mt32 customers-list" id='myTable'>
      <thead class="table" >
    <tr>
      <th class='header' onclick="sortTable(0)" scope="col">ID</th>
      <th class='header' onclick="sortTable(1)" scope="col">Description</th>
      <th class='header' onclick="sortTable(2)" scope="col">Cost</th>
      <th class='header' onclick="sortTable(3)" scope="col">Order Quantity</th>

    </tr>
  </thead>
  <tbody>
      <tr>
  {% for product in products %}
      <td> <a href="{% url 'productpage' product.id %}">{{product.id}}</a></td>
      <td><h6><strong>{{product.description}}</strong></h6></td>
      <td>£{{product.costprice |floatformat:2}}</td>
      <td>{{product.on_order_quantity |floatformat:0}}</td>


    </tr>
 </tbody>
 {% endfor %}
 

{% endblock %}

Я так старался… И не очень далеко продвинулся. Пожалуйста, помогите…

Комментарии:

1. Пожалуйста, укажите свой шаблон.

Ответ №1:

в контексте вы пишете «заказы», но в шаблоне вы запрашиваете «заказ», который не определен. Попробуйте

 <h4> Supplier: {{orders.supplier}}</h4>