Как вывести один товар в 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