我有一个模型的两个实例'产品'。在管理员中,我上传了两张图片。当在各自的页面而不是两个页面上调用图像时,所有四个图像都被提供给每个页面。如何将图像限制在适当的产品中,而不会将图像溢出到错误的产品中?
我在models.py中有这种关系
class Product(models.Model):
product_name = models.CharField(max_length=200)
def __unicode__(self):
return self.product_name
class Image(models.Model):
product_image = models.ForeignKey(Product)
image = models.ImageField(upload_to='image')
image_id = models.CharField(max_length=200)
views.py
def productpage(request, product_image_id):
product_list = Product.objects.all()
image_list = Image.objects.all()
product = get_object_or_404(Product, pk=product_image_id)
image = get_object_or_404(Image, pk=product_image_id)
return render(request, 'polls/productpage.html', {
'product': product, 'image': image,
'product_list' : product_list, 'image_list':image_list
TEMPLATE
{% for image in image_list %}
<div id ="{{ image.image_id }}"class="numbers"><img src="{{ image.image.url }}" alt="slide"></div>
{% endfor %}
}
我在两个产品页面上都会得到这个结果,当只有2个图像时,它会返回所有4个图像。
<div id ="one"class="numbers"><img src="/media/image/red1.jpg" alt="slide"></div>
<div id ="two"class="numbers"><img src="/media/image/red2.png" alt="slide"></div>
<div id ="one"class="numbers"><img src="/media/image/blue1.jpg" alt="slide"></div>
<div id ="two"class="numbers"><img src="/media/image/blue2.png" alt="slide"></div>
答案 0 :(得分:2)
您可以使用image_list
并仅为此获取图片,而不是获取所有图片的product
。您可以使用product.image_set.all()
作为
{% for image in product.image_set.all %}
<div id ="{{ image.image_id }}"class="numbers"><img src="{{ image.image.url }}" alt="slide"></div>
{% endfor %}