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
得到所有地址。
我是 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
得到所有地址。