我有这个模型
class ShippingAddress(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, null=True)
order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
address = models.CharField(max_length=200, null=False)
city = models.CharField(max_length=200, null=False)
state = models.CharField(max_length=200, null=False)
zipcode = models.CharField(max_length=200, null=False)
date_added = models.DateTimeField(auto_now_add=True)
和此视图
def view_profile(request):
data = cartData(request)
cartItems = data['cartItems']
shippingAddress = ShippingAddress.objects.all()
args = {'user': request.user, 'cartItems': cartItems, 'shippingAddress': shippingAddress}
return render(request, 'store/profile.html', args)
模板
{% for sa in shippingAddress %}
<p>address: {{ sa.address }}</p>
<p>city: {{ sa.city }}</p>
<p>state: {{ sa.state }}</p>
<p>zipcode: {{ sa.zipcode }}</p>
{% endfor %}`enter code here`
问题是模板显示数据库中的所有收货地址,我只希望它显示与已登录用户
相关的收货地址谢谢
答案 0 :(得分:0)
您需要先查询客户模型:
active_customer = Customer.objects.get(name=request.user)
接下来,您需要在“ ShippingAddress”模型中设置反向关系,类似于:
customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, null=True, related_name="shipping_address")
设置好后,您可以获取所查询客户的所有送货地址:
shipping_addresses = active_customer.shipping_address.all()
将它们传递到上下文,并在模板中对其进行迭代以显示它们。请注意,客户查询可能会有所不同,这取决于客户模型的设置方式。