#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>```