Мне кажется, я понимаю, что вы ищете.
Запрос # 1
Вы хотите все галереи, а также одно изображение для каждой галереи.Поскольку Django автоматически позволяет вам получать доступ к связанным объектам, вы можете сделать это, просто извлекая все галереи из вашей базы данных.
select_related()
автоматически «следует» за связями внешнего ключа при выполнении запроса, что означает последующее использованиеотношений внешнего ключа не потребует запросов к базе данных.
#selects all galleries ordered from newest to oldest
galleries = Gallery.objects.order_by('-pub_date').select_related()
Чтобы получить первое изображение из каждой галереи в вашем шаблоне, вы должны сделать это:
{% for gallery in galleries %}
{{ gallery.name }}
<img src="{{ gallery.image_set.all.0.image }}">
{% endfor %}
https://docs.djangoproject.com/en/dev/ref/models/querysets/
https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for
Query # 2
Это фактически работает точно так же, как и предыдущий запрос,но только для одной галереи.
gallery = Gallery.objects.get(id=gallery_id).select_related()
В вашем шаблоне:
{% for image in gallery.image_set.all %}
<img src="{{ image.image }}"><br>
{{ image.caption }}
{% endfor %}