Django:Link 两个具有公共外键的模型

Django: Link two models with common foreign keys

我是 django 的新手,目前正在制作一个管理面板,我可以在其中查看用户订单。

我根据以下 OrderItem 模型处理我的订单

class OrderItem(models.Model):
    customer = models.ForeignKey(
        User, on_delete=models.SET_NULL, blank=True, null=True)
    product = models.ForeignKey(
        Product, on_delete=models.SET_NULL, blank=True, null=True)
    quantity = models.IntegerField(default=0, null=True, blank=True)
    date_added = models.DateTimeField(auto_now_add=True)

以及他们在以下 ShippingAdress 模型中的运输信息

class ShippingAddress(models.Model):
    customer = models.ForeignKey(
        User, on_delete=models.SET_NULL, blank=True, null=True)
    address = models.CharField(max_length=200, null=True)
    city = models.CharField(max_length=200, null=True)
    state = models.CharField(max_length=200, null=True)
    zipcode = models.CharField(max_length=200, null=True)

Views.py

orders=OrderItem.objects.select_related('customer')
 context={
        'orders':orders,        
    }

 return render(request, 'index.html', context)

在我的 html 中,我想打印每个客户的 ShippingAdress 数据。 我在想类似下面的东西,但我卡住了,它不起作用。

{% for order in orders %}

  <td>{{order.customer.address}}</td>
  <td>{{order.customer.city}}</td>

{% endfor %}

实现此目标的正确方法是什么?

related_name 添加到您的 ShippingAddress

class ShippingAddress(models.Model):
customer = models.ForeignKey(
    User, on_delete=models.SET_NULL, blank=True, null=True, related_name="addresses")

并像那样在您的模板中使用它

<td>{{order.customer.addresses.first.address}}</td>

first 得到第一个地址,用 all 得到所有地址。