Как получить данные из связаной модели?
Мне на главную страницу сайта необходимо выводить список товаров. Проблема в том, что я не знаю, как вывести фотографию товара. Вот мои модели:
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
P. S.: Почему бы не изменить модели так?:
→ Ссылка
Получить доступ к записям, связанным отношением 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)