Python 如何使用django型号获得每个国家的产品数量

Python 如何使用django型号获得每个国家的产品数量,python,django,django-views,orm,django-templates,Python,Django,Django Views,Orm,Django Templates,我在Django有一个模型,我需要一种方法来获得每个国家的产品数量,这样我就可以用它来绘制图表 NB:我在应用程序中使用django countries软件包 models.py from django.db import models from django_countries.fields import CountryField class Product(models.Model): name = models.CharField(max_length=36) user =

我在Django有一个模型,我需要一种方法来获得每个国家的产品数量,这样我就可以用它来绘制图表

NB:我在应用程序中使用django countries软件包

models.py

from django.db import models
from django_countries.fields import CountryField

class Product(models.Model):
    name = models.CharField(max_length=36)    user = models.ForeignKey(User, on_delete=models.CASCADE)
    is_favourite = models.ManyToManyField(User, related_name='favourite', blank=True)
    country = CountryField(blank_label='(select country)')
我希望结果是这样的: 美国:5 NG:20 SA:8

依此类推,我可以用它来绘制图表。

您可以使用:

我们可以将其转换为字典,将国家映射到相应的数字,并使用:

from django.db.models import Count

qs = Product.objects.values('country').annotate(
    number=Count('pk')
).order_by('country')

result = {
    q['country']: q['number']
    for q in qs
}
从django.db.models导入计数
qs=产品.对象.值('country')。注释(
数字=计数('pk')
).订购人(“国家”)
结果={
q['country']:q['number']
对于qs中的q
}
<QuerySet [
    {'country': 'NG', 'number': 20},
    {'country': 'SA', 'number': 8},
    {'country': 'US', 'number': 5}
]>
from django.db.models import Count

qs = Product.objects.values('country').annotate(
    number=Count('pk')
).order_by('country')

result = {
    q['country']: q['number']
    for q in qs
}