Как получить данные из связаной модели?

Мне на главную страницу сайта необходимо выводить список товаров. Проблема в том, что я не знаю, как вывести фотографию товара. Вот мои модели:

class Product(models.Model):
...

И есть модель в которой храняться фотографии товара

class ProductImage(models.Model):
    product = models.ForeignKey(Product, blank=True, null=True, default=None, on_delete=models.CASCADE)
    image = models.ImageField(upload_to='products_images/')
...

Вот код из view.py

def product_list(request, category_slug=None):
    template = 'shop/product/list.html'
    products = Product.objects.all
    ....
    return render(request, ... 'products': products, ...)

Вот шаблон:

{% for product in products %}
...
<a href="{{ product.get_absolute_url }}"><img src="{{ ???? }}"></a>
...
{% endfor %}

Вопрос : Как получить queryset фотографии товара, чтобы вывести их на странице списка товаров.(Рандомную или первую каждого товара)


Ответы (1 шт):

Автор решения: nomnoms12

Получить доступ к записям, связанным отношением ForeignKey с текущей, можно следующим образом:

product.productimage_set

Получить первую запись из QuerySet можно методом first.

Пример:

<img src="{{ product.productimage_set.first.image.url }}">


P. S.: Почему бы не изменить модели так?:

class ProductImage(models.Model):
    image = models.ImageField(upload_to='products_images/')


class Product(models.Model):
    image = models.ForeignKey(ProductImage, models.CASCADE)
→ Ссылка