Отображение данных из нескольких таблиц в одном шаблоне

Я пытаюсь создать приборную панель для заказов, сделанных клиентом. У меня есть несколько таблиц, но две, с которыми я имею дело, это "Order" и "Order_Detail". Из таблицы "Order" мне нужно отобразить Customer, Status, и Required_date, из таблицы "Order_Detail" мне нужен Product. Я могу получить доступ к данным, но я не могу понять, как отобразить все записи одновременно на одной странице.

models.py

    class Order(models.Model):
    STATUS = (
            ('New', 'New'),
            ('Ready For Fullfillment', 'Ready For Fullfillment'),
            ('Fullfilled Ready For Delivery', 'Fullfilled Ready For Delivery'),
            ('Out For Delivery', 'Out For Delivery'),
            ('Delivered', 'Delivered'),
            )
    order_date = models.DateTimeField(auto_now_add=True, null=True)
    required_date = models.DateTimeField(auto_now_add=True, null=True)
    status = models.CharField(max_length=200, null=True, choices=STATUS)
    note = models.CharField(max_length=1000, null=True, blank=True)
    customer = models.ForeignKey(Customer, null=True, on_delete=models.SET_NULL)
    
    def __str__(self):
        return self.customer.name

class Order_Detail(models.Model):
    orderNumber = models.ForeignKey(Order, null=True, on_delete=models.SET_NULL)
    product = models.ForeignKey(Product, null=True, on_delete=models.SET_NULL)
    pounds = models.IntegerField(null=True)
    ounces = models.IntegerField(null=True)
    container = models.ForeignKey(Container, null=True, on_delete=models.SET_NULL)
    lot_code = models.CharField(max_length=200, null=True, blank=True)
    note = models.CharField(max_length=1000, null=True, blank=True)

В моем файле views.py я использую следующий код:

    print('TEST2')
    o = Order.objects.all()
    o_notdelivered = Order.objects.exclude(status='Delivered')
    for e in o_notdelivered:
        print('Order ID:', e.id)
        order_detail_data = serializers.serialize("python", Order_Detail.objects.all().filter(orderNumber=e.id))
        print('order_detail_data:', order_detail_data)

С помощью этого кода я могу получить данные заказа и связанные с ним данные ORDER_DETAIL, но я не могу понять, как собрать вместе нужные мне поля и отправить их в мой шаблон. Обратите внимание, что в шаблон нужно будет отправить несколько заказов и данных о заказах.

По сути, в конце концов, я хочу, чтобы на моей приборной панели была таблица, которая выглядит следующим образом: |Customer|Product|Required Date|Status| |-|-|-|-| |C1|Product1|date here|New| |C2|Product3|date here|New|

В вашем шаблоне (файл .html) вы должны получить доступ к этим переменным, например, если вы хотите показать статус всех пакетов, то в html-файле вы должны написать что-то вроде:

{% for object in o %} <!-- Works like in python-->
            
           <h1>{{object.status}}</h1> 
           <!-- Do this for all other attributes-->
       
{% endfor %} <!-- Must close 'for loop'-->

используйте этот запрос в ваших представлениях Order_Detail.objects.all() и передайте контекст.

views.py

   order_details = Order_Detail.objects.all()
   context = {'order_details':order_details }
   ....your others code

затем в вашем html:

   {{order_details.product}} #accessing data from your Order_Detail model

    {{order_details.orderNumber.status}}  #accessing data from your Order model via foreignkey



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