Как одним запросом получить все Product в категории, и связаны с ними Price определённого типа
Подскажите как сформировать запрос, чтоб в ответ получить Queriset с аннотаций, где значением Queriset будут Product, а аннотация к каждому продукту объект Price по указанному типу? Есть такие модели:
class Category(MPTTModel):
"""
Базовая модель категории и под категории.
"""
name = models.CharField(
_("Name of category"),
max_length=500,
)
slug = models.SlugField(
_("Slug of category name"),
max_length=1000,
unique=True,
blank=True,
null=True,
)
class Product(models.Model):
"""Модель описывает в себе все свойства товара."""
category = models.ForeignKey(
"products.Category",
verbose_name=_("Category of product"),
on_delete=models.SET_NULL,
blank=True,
null=True,
)
class Price(models.Model):
"""Модель описывает в себе цену на продукт. Есть связь с моделью Product."""
product = models.ForeignKey(
"products.Product",
verbose_name=_("Product"),
related_name="product_prices",
on_delete=models.DO_NOTHING,
null=True,
blank=True,
)
# Тип цены согласно которой формируется цифра стоимости
price_type = models.CharField(
_("Price type name"),
max_length=300,
)
Ответы (1 шт):
Автор решения: Владимир Грумент
→ Ссылка
Вот правильное решение:
Product.objects.filter(category__slug=kwargs.get("slug_name"),
product_prices__price_type=selected_price_type, ).annotate(
product_price=F("product_prices__value")).values("id", "name", "slug", "description", "article",
"in_stock", "weight", "package_count", "income_date",
"code", "product_price").order_by("name")