Как вывести один товар в django

у меня есть база дынных для товаров, у одного товара может быть разные цвета и размеры как мне сделать что бы выводился только один товар, со скидкой если есть иначе показать цену минимального размера. Помогите как сделать правильный queryset

models:

class Product(models.Model):
    category = models.ForeignKey(
        to=CategoryModel, related_name="product", on_delete=models.PROTECT)
    name = models.CharField(max_length=255, verbose_name="Название продукта")
    slug = models.SlugField(max_length=255, verbose_name="URL продукта")
    description = models.TextField(
        verbose_name="Описание")

class ColorProduct(models.Model):
    product = models.ForeignKey(
        to=Product, related_name="color", on_delete=models.CASCADE)
    color = models.CharField(max_length=255, verbose_name="Цвет")
    slug = models.SlugField(max_length=255, verbose_name="URL категории")
    image_color = models.ImageField(
        verbose_name="Фото цвета", blank=True, null=True, upload_to="image_color")

class SizeProduct(models.Model):
    color = models.ForeignKey(
        to=ColorProduct, related_name="size", on_delete=models.CASCADE)
    size = models.PositiveIntegerField(verbose_name="Размер")
    price = models.DecimalField(
        default=0.00, max_digits=7, decimal_places=2, verbose_name="Цена")
    discount = models.DecimalField(
        default=0.00, max_digits=4, decimal_places=2, verbose_name="Скидка в %")
    quantity = models.PositiveIntegerField(
        default=0, verbose_name="Количество")
    slug = models.SlugField(max_length=255, verbose_name="URL категории")

    def sell_price(self):
        if self.discount:
            return Decimal(self.price - self.price * self.discount / 100).quantize(Decimal('0.01'))

        return self.price

class ImageProduct(models.Model):
    color = models.ForeignKey(
        to=ColorProduct, related_name="image", on_delete=models.CASCADE)
    image = models.ImageField(upload_to="product_images", verbose_name="Фото")

views:

class ShopListView(ListView):
    model = SizeProduct
    template_name = "goods/shop.html"
    context_object_name = "products"
    paginate_by = 10

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["title"] = "Shop"
        return context

    def get_queryset(self):
        ...

Django==4.2.11

Python==3.11.8

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