Как отфильтровать все объекты адресов доставки, связанные с конкретным заказом
как мне отфильтровать все объекты адресов доставки, связанные с конкретным заказом, так что когда кто-то заказывает продукт с адресом доставки, я хочу получить этот адрес и отобразить его в шаблоне, специфичном для этого заказа. Буду очень признателен за помощь, спасибо!
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 %}