Как добавить несколько фотографий на одну страницу сайта с помощью django?

Я пишу django проект для интернет магазина. На странице с описанием товара у меня есть несколько фотографий для этого товара и я не могу добавить их в шаблон. Я использую 2 модели с отношением Many to many - для товара и для фотографий, и добавил их в template.html. Но я не вижу ни одной фотографии на странице. Мой код выглядит следующим образом:

models.py:

class ProductPhoto(models.Model):

    def get_file_name(self, filename: str) -> str:
        ext_file = filename.strip().split('.')[-1]
        new_filename = f'{uuid.uuid4()}.{ext_file}'
        return os.path.join('product_photo/', new_filename)

    # product = models.ForeignKey(Product, on_delete=models.CASCADE)
    photo = models.ImageField(upload_to=get_file_name)
    description = models.CharField(max_length=20, blank=True)

    def __str__(self):
        return f'{self.description}'


class Product(models.Model):

    slug = models.SlugField(max_length=200, db_index=True)
    title = models.CharField(unique=True, max_length=100, db_index=True)
    description_short = models.CharField(max_length=200)
    description = models.CharField(max_length=500)
    color = models.CharField(max_length=20)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    sale = models.SmallIntegerField(max_length=2, blank=True)
    new_arrival = models.BooleanField(default=True)
    is_visible = models.BooleanField(default=True)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    photo = models.ManyToManyField(ProductPhoto)

    def __str__(self):
        return f'{self.title}'

    class Meta:
        index_together = (('id', 'slug'), )

    def get_absolute_url(self):
        return reverse("shop:products", args=[self.id, self.slug])

views.py:

def product_details(request, id, slug):
    product = get_object_or_404(Product, id=id, slug=slug, is_visible=True)
    cart = Cart(request)

    return render(request,
                  'single-product.html',
                  {'product': product,
                   'cart': cart,
                   })

template.html:

<div class="product-details-left">
    <div class="product-details-images">
        {% for item in product.photo.all %}
        <div class="lg-image">
            <img src="{{ item }}" alt="">
            <a href="{{ item }}" class="popup-img venobox" data-gall="myGallery"><i class="fa fa-expand"></i></a>
        </div>
        {% endfor %}
    </div>
    <div class="product-details-thumbs">
        {% for item in product.photo.all %}
        <div class="sm-image"><img src="{{ item }}" alt="product image thumb"></div>
        {% endfor %}
    </div>
</div>

Если я добавляю "print(product.photo)" к "def product_details" в терминале, я вижу: Not Found: /shop/2/nabir-dlya-vannoyi-vislanda-3od-asort/набір для ванної 2, где "/shop/2/nabir-dlya-vannoyi-vislanda-3od-asort" - absolute_url, а "набір для ванної 2" - описание, добавленное к фото.

Я думаю, что это из-за пути к фотографии в "def get_file_name", но я могу ошибаться.

Кто знает, как добавить фотографии в html шаблон в этом случае?

Вернуться на верх