我有两个模型SaleItem
和Product
。在这里,我想得到products
表中SaleItem
的计数。我使用了注释但没有得到理想的结果
class SaleItem(models.Model):
product = models.ForeignKey(Product, related_name="sale_products")
quantity = models.PositiveIntegerField()
class Product(models.Model):
name = models.CharField(max_length=128)
views.py
SaleItem.objects.values("product__name").annotate(count=Count("product__name"))
当我在shell中尝试这个时。我得到所有产品的数量为1
<QuerySet [{'count': 1, 'product__name': u'Rice'}, {'count': 1, 'product__name': u'Rice'}, {'count': 1, 'product__name': u'Mango'}, {'count': 1, 'product__name': u'Mango'}, {'count': 1, 'product__name': u'Mango'}, {'count': 1, 'product__name': u'Apple'}, {'count': 1, 'product__name': u'Apple'}, {'count': 1, 'product__name': u'Apple'}, {'count': 1, 'product__name': u'Apple'}, {'count': 1, 'product__name': u'Grape'}, {'count': 1, 'product__name': u'Grape'}, {'count': 1, 'product__name': u'Grape'}, {'count': 1, 'product__name': u'Grape'}, {'count': 1, 'product__name': u'Grape'}, {'count': 1, 'product__name': u'Grape'}, {'count': 1, 'product__name': u'Grape'}, {'count': 1, 'product__name': u'Grape'}]>
这里我想要SaleItem表中每个产品的totalcount。我怎样才能做到这一点。有人请帮助我。
答案 0 :(得分:1)
请检查:https://docs.djangoproject.com/en/1.11/topics/db/aggregation/#cheat-sheet
在示例中它有:
Each publisher, each with a count of books as a "num_books" attribute.
>>> from django.db.models import Count
>>> pubs = Publisher.objects.annotate(num_books=Count('book'))
>>> pubs
<QuerySet [<Publisher: BaloneyPress>, <Publisher: SalamiPress>, ...]>
>>> pubs[0].num_books
73
将它应用到你的案例中,我认为它应该是这样的:
sale_items = SaleItem.objects.annotate(product_count=Count("product__name"))
然后你可以做
sale_items[0].product_count
这将返回与一个销售商品相关的产品数量