Прямой ответ на ваш вопрос: правильный вызов будет listing.listingimages_set.all()
- он вернет набор запросов всех изображений листинга определенного экземпляра списка.
Кроме того, я бы советовал не передавать набор запросов вшаблон Джанго.Я думаю, что лучше создать контекст шаблона из примитивов Python и передать его.Таким образом, легче отлаживать и рассуждать об этом:
def index(request):
listings = Listing.objects.filter(status=True).prefetch_related('listingimages_set')
context = {
'listings': [
{
'title': listing.listing_title,
'images': list(listing.listingimages_set.all()),
} for listing in listings
]
}
return render(request, 'base/index.html', context)
Тогда вы можете ссылаться на изображение листинга в вашем шаблоне как
<ul>
{% for listing in listings %}
<li>
{{ listing.title }}
<ul>
{% for image in listing.images %}
<li>{{ image.image_url }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
Это, конечно, простопример.Но это показывает, что таким образом вы получаете больший контроль над контекстом шаблона и можете отлаживать его содержимое до того, как он попадет на визуализированную HTML-страницу.
Кстати, наиболее распространенным и принятым соглашением является вызов моделей с однимимя существительное.Например, ListingImage
вместо ListingImages
.