Access ForeignKey set directly in template in Django

Or you could add a method to your Item model:

def get_first_image(self):
    return self.itemimage_set.all()[0]

and then call this method in your template:

{{ item.get_first_image }}

Or you could use:

{{ item.itemimage_set.all.0 }}

and to get the first image's url:

<img src="{{ item.itemimage_set.all.0.url }}">

Though if you need more flexibility (more than one picture in certain cases, etc.) it's probably best to write a little templatetag.


{% with item.itemimage_set.all|first as image %}
  <img src="{{ image.url }}" />
{% endwith %} 

One possible way would be to iterate over all the ItemImages like so:

{% for item in items %}
<div>
    {{ item.name }}<br>
    {% for image in item.itemimage_set.all %}
    <img src="{{ image.image.url }}">
    {% endfor %}
</div>
{% endfor %}