Как отфильтровать все объекты адресов доставки, связанные с конкретным заказом

как мне отфильтровать все объекты адресов доставки, связанные с конкретным заказом, так что когда кто-то заказывает продукт с адресом доставки, я хочу получить этот адрес и отобразить его в шаблоне, специфичном для этого заказа. Буду очень признателен за помощь, спасибо!

models.py

class Order(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, blank=True, null=True)

class OrderItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, blank=True, null=True)
    order = models.ForeignKey(Order, on_delete=models.SET_NULL, blank=True, null=True)

class Product(models.Model):
    name = models.CharField(max_length=150)
    description = models.TextField()

class ShippingAddress(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, blank=True, null=True)
    order = models.ForeignKey(Order, on_delete=models.SET_NULL, blank=True, null=True)
    address_one = models.CharField(max_length=200)

views.py

@login_required
def orders(request):
    orderitems = OrderItem.objects.filter(order__customer__user=request.user)

    #how do I get the shipping address associated with order
    shipping = ShippingAddress.objects.filter()

    context = {"orderitems": orderitems, "shipping": shipping}

HTML

    {% for orderitem in orderitems %}
        <div class="order-data-view">
            
            <div class="order">{{ orderitem.product.name }}</div>
            <div class="date">{{ orderitem.date_added }}</div>
            <div class="status">dummydata</div>
            <div class="delivering-to">{{ address_one }}</div>

        </div>
    {% endfor %}

Попробуйте следующее view.py

def orders(request):
    orderitems = OrderItem.objects.filter(order__customer__user=request.user)

    order_data = []
    for orderitem in orderitems:
        shipping_add = ShippingAddress.objects.filter(order_id=orderitem.id).first() # this will fatch particular order's address data
        order_data.append({
            'product_name':orderitem.product.name',
            'date_added': orderitem.date_added,
            'address_one':shipping_add.address_one,
        })

    context = {"orderitems": order_data}

html

{% for orderitem in orderitems %}
    <div class="order-data-view">
    
        <div class="order">{{ product_name }}</div>
        <div class="date">{{ date_added }}</div>
        <div class="status">dummydata</div>
        <div class="delivering-to">{{ address_one }}</div>

    </div>
{% endfor %}
Вернуться на верх