我有一个简化的模型:
class Item(models.Model):
name = models.CharField(max_length=120)
class ItemImage(models.Model):
image = models.ImageField(upload_to='upload_dir')
item = models.ForeignKey(Item)
一个Item
可以包含多个ItemImages
。我还有一个模板,用于从视图中呈现以下数据集:
items = Item.objects.all()
所以现在我想在模板中做一些类似这样的事情:
{% for item in items %}
<div>
{{ item.name }}<br>
<img src="{{ item.itemimage_set.all()[0] }}">
</div>
{% endfor %}
但很明显这是不可能的,至少不能直接从模板中获取。
获得模板内第一个图像的等价物的正确方法是什么?
5条答案
按热度按时间u1ehiz5o1#
inn6fuwd2#
或者,您可以向
Item
模型添加一个方法:然后在模板中调用这个方法:
或者您可以用途:
并获取第一张图片的url:
但是如果你需要更多的灵活性(在某些情况下不止一张图片,等等),最好写一个小的templatag。
rt4zxlrg3#
一种可能的方法是像这样迭代所有的
ItemImage
:u1ehiz5o4#
这对我很有效,请在模型中使用related_name。
rggaifut5#
如果您想从设置的第一张图片,您可以:
但我也喜欢Andray解决方案中的with