Django создает группу, отличную от id - PullRequest
2 голосов
/ 13 июня 2019

Я хочу посчитать количество пользователей для одного и того же продукта

models.py

class Product(models.Model):
   pass
class User(models.Model):
   product = models.ForeignKey(Product)
   age = models.IntegerField(blank=True, null=True)

User.objects.filter(age__gt=18).annotate(product_count=Count('product_id'))

выходной sql

SELECT
  "user"."product_id"
  COUNT("user"."product_id") AS "product_count"
FROM "user"
WHERE "user"."age" > 18
GROUP BY "user"."id";

желаемый sql :

SELECT
  "user"."product_id"
  COUNT("user"."product_id") AS "product_count"
FROM "user"
WHERE "user"."age" > 18
GROUP BY "user"."product_id";

1 Ответ

2 голосов
/ 13 июня 2019

Я не думаю, что это имеет какой-либо смысл.Что вы хотите, вероятно, это:

Product.objects.annotate(user_count=Count('user'))
...