Как получить фотографии каждого продукта с помощью внешнего ключа и показать их в виде списка в django?

Я работаю над сайтом электронной коммерции и написал модель для альбома изображений для каждого продукта. Но когда я хочу показать товары в виде списка, все изображения будут показаны для каждого товара. Что я должен сделать, чтобы показать фотографии, относящиеся к каждому товару?

Вот мой models.py

class Product(models.Model):
category = models.ForeignKey(Category, related_name='products', on_delete=models.CASCADE)
name = models.CharField(max_length=200, db_index=True)
slug = models.SlugField(max_length=200, db_index=True)
description = models.TextField(blank=True)
price = models.DecimalField(max_digits=10, decimal_places=2)
available = models.BooleanField(default=True)
image = models.ImageField(blank=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)

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

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

def __str__(self):
    return self.name


class ProductImage(models.Model):
        product = models.ForeignKey(Product, default=None, on_delete=models.CASCADE)
        image = models.ImageField(upload_to='products/%y/%m/%d')

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

Используя класс ProductImage, я могу добавить несколько фотографий для каждого товара. и другая проблема заключается в том, что если у меня есть товар с 5 фотографиями, я хочу показать только первые две фотографии в представлении списка, а не все. что я должен сделать для этой проблемы?

Вот мой файл admin.py:

class ProductImageAdmin(admin.StackedInline):
model = ProductImage


@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    inlines = [ProductImageAdmin]
    list_display = ['name', 'slug', 'price', 'available', 'created', 'updated']
    list_filter = ['available', 'created', 'updated']
    list_editable = ['price', 'available']
    prepopulated_fields = {'slug': ('name',)}


@admin.register(ProductImage)
class ProductImageAdmin(admin.ModelAdmin):
   pass

Вот мой views.py:

def product_list(request, category_slug=None):
category = None
categories = Category.objects.all()
products = Product.objects.filter(available=True)
photos = ProductImage.objects.all()

if category_slug:
    category = get_object_or_404(Category, slug=category_slug)
    products = products.filter(category=category)

context = {
    'category': category,
    'categories': categories,
    'products': products,
    'photos': photos
}
return render(request, 'product_list.html', context)


def product_detail(request, id, slug):
product = get_object_or_404(Product, id=id, slug=slug, available=True)
photos = ProductImage.objects.filter(product=product)

context = {'product': product,
           'photos': photos
           }
return render(request, 'product_detail.html', context)

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

и вот мой шаблон:

Здесь есть две проблемы: как показать первые две фотографии для каждого товара и как показать фотографии, относящиеся к уникальному товару

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