class Product(models.Model):
company = models.ForeignKey('Company', on_delete=models.SET_NULL, null=True)
class ProductImage(models.Model):
product = models.ForeignKey('Product', on_delete=models.SET_NULL, null=True)
image_path = models.ImageField(max_length=255,null=True,blank=True,upload_to='images/%Y/%m/%d')
在我的views.py
中class HomeView(ListView):
template_name = "catalog/product_list.html"
context_object_name = 'product_list'
model = Product
product_list.html中的问题就在这里
{% if product_list %}
{% for product in product_list %}
<!-- the problem is here -->
if there is an image show
<img src="default" />
else
<img src="product.ProductImage.image_path here" />
{% endfor %}
{% endif %}
问题出在product_list的迭代中 我试过,productImage = product。[productImage或product_image或者是产品图片] .first()但它不起作用
我也试过
{%
img = ''
try:
productImage = product.productimage_set.first()
img = productImage.image_path
except ProductImage.DoesNotExist:
img = ''
%}
<img class="card-img-top" style="height: 225px; width: 100%; display: block;" src="{{product_image.image_path}}" data-holder-rendered="true">
{%
%}
但它只输出代码块
我也试过这个
{% productImage = product.productimage_set.first() %}
但它表示&#39; productImage&#39;,预期&#39;空&#39;或者&#39; endfor&#39;。您是否忘记注册或加载此标记?
答案 0 :(得分:2)
您需要使用图片的url
属性。
{% for product in product_list %}
{% for product_image in product.productimage_set.all %}
<image src="{{ product.image_path.url }}" />
{% endfor %}
{% endfor %}
答案 1 :(得分:0)
如果您只想发布第一张照片,则不需要第二张 for 循环。只需使用:
<image src="{{ product.productimage.all.0.image_path.url }}" />
抱歉,我迟到了 3 年……但以防其他人偶然发现这一点。