Контекст подробного представления

#python #django

Вопрос:

как я могу поместить все изображения элемента в контекст, который я попробовал {% для изображения в item.images.все %} в шаблоне, но это не работает. я не знаю , как это отфильтровать, тай, для твоего ответа

Модели

 class Item(models.Model):
    name = models.CharField(max_length=255)
    slug = models.SlugField(max_length=255, unique=True)
    brand = models.ForeignKey(Brand, on_delete=models.CASCADE, blank=True)
    collection = models.ForeignKey(Collection, on_delete=models.CASCADE)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    sub_category = models.ForeignKey(SubCategory, on_delete=models.CASCADE, null=True)
    description = models.TextField(blank=True)
    image = models.ImageField(upload_to='photos/%Y/%m/%d/', null=True)
    size = ArrayField(models.CharField(max_length=255))
    price = models.PositiveIntegerField()
    on_sale = models.BooleanField(default=0)
    discount = models.PositiveIntegerField(null=True, blank=True)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('single_product', kwargs={'slug': self.slug})

    def get_sale(self):
        price = int(self.price * (100 - self.discount) / 100)

        return price

class ItemImage(models.Model):
    item = models.ForeignKey(Item, on_delete=models.CASCADE, null=True, related_name='images')
    images = models.ImageField(upload_to='photos/%Y/%m/%d/', null=True)

    def __str__(self):
        return self.item.name
 

число просмотров

 class ItemDetail(DetailView):
    model = Item
    context_object_name = 'item'
    template_name = 'essense/single-product-details.html'

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super().get_context_data(**kwargs)
 

Комментарии:

1. Пожалуйста, покажите шаблон.

2. Нормально item.images.all должно работать. Поэтому я думаю, что что-то не так с тем, как вы визуализируете изображения.

3. <div класс=»однопродукт_сумка clearfix»> <div класс=»однопродукт_сумка clearfix»><div класс=»product_thumbnail_ скользит сова-карусель»> {% для изображения в item.images. все %} <img src=»{{ image.url }}» alt=»» ширина=»360″ высота=»539″> {% для %} <img src=»{{ image.url }}» alt=»» ширина=»360″ высота=»539″></div> </div></div>

Ответ №1:

Вы довольно близки. В теге шаблона {% for image in item.images.all %} image ссылается на экземпляр вашей модели ItemImage. Вам нужно ссылаться на поле изображения в той модели, которую вы назвали images . Итак, вместо src="{{ image.url }}" использования src="{{ image.images.url }}"

 <div className="single_product_thumb clearfix">
    <div className="product_thumbnail_slides owl-carousel"> 
        {% for image in item.images.all %} <img
            src="{{ image.images.url }}" alt="" width="360" height="539"> 
        {% endfor %}
    </div>
</div>```