Подсчет объектов foreignkey в django
предположить
class Product(models.Model):
user = models.ForeignKey(User,...)
...
class Sold(models.Model):
post = models.ForeignKey(post,...)
buyer = models.ForeignKey(User,...)
Как получить количество проданных товаров, используя модель User
Что-то вроде User.objects.all().annotate(nbuy=Count("?"))
Постановка "sold" на место "?" дает количество купленных пользователем предметов. Что нужно сделать, чтобы получить количество предметов, проданных пользователем?
Вы можете сделать это, если запросите модель Sold следующим образом:
Sold.objects.values('buyer').annotate(nbuy=Count('buyer'))
# returns -> {'buyer': 1, 'nbuy': 23}
Это возвращает идентификатор пользователя и количество объектов Sale, которые существуют с этим идентификатором пользователя.
Технически User.objects.all().annotate(nbuy=Count("sold"))
подсчитывает все Sold
объекты, связанные с пользователем по ForeignKey. Если я правильно понимаю вашу модель, ссылка представляет покупателя, поэтому вы получаете количество продуктов, которые купил пользователь.
Я полагаю, что user
в вашем Product
представляет собой предложение пользователя, т.е. продажу продукта, поэтому User.objects.all().(nsold=Count("product"))
даст вам это число.