Задать вопрос

Как узнать количество продуктов в категории через django orm?

вот есть такие модельки обычные
# coding: utf-8
from django.db import models


class Category(models.Model):
    name = models.CharField('Категория товара', max_length=64)


class Product(models.Model):
    category = models.ForeignKey(Category, verbose_name='Категория')
    name = models.CharField('Наименование товара', max_length=128)
    price = models.DecimalField('Цена единицы, руб.', max_digits=10, decimal_places=2)


как с помощью Django ORM выбрать товары, цена которых больше или равна 100 руб., сгруппировать по категориям и посчитать количество товаров в каждой категории?

делаю так:
Category.objects.filter(product__price__gte=100).annotate(product_name=F('product__name'), product_price=F('product__price'), count=Count('product'))

но выходит, что count 1 всегда

а есть сделать так
Category.objects.filter(product__price__gte=100).annotate(count=Count('product'))

то count показывает то что надо
  • Вопрос задан
  • 4530 просмотров
Подписаться 4 Оценить 2 комментария
Ответ пользователя Виктор Мельников К ответам на вопрос (3)
Хотите получить товары, а выборку делаете по категориям. Product.objects.filter ...
Ответ написан