如何为Django编写QuerySet以获得模型计数

如何为Django编写QuerySet以获得模型计数,django,django-views,Django,Django Views,Model.py 类清单数据(models.Model): Views.py def home(请求): 这是我得到的输出: 在我的数据库中,我制作了苹果、联想和四种型号[MacBook Pro 13.0、MacBook Pro 15.0、T440、T450、T540p],每种型号都有10台笔记本电脑,但当我计算时,我得到MacBook的总数为20,联想的总数为30,我需要将每种型号都计算为 MacBookPro 13.0”-10 MacBookPro 15.0”-10 T440--10 T45

Model.py

类清单数据(models.Model):

Views.py

def home(请求):

这是我得到的输出:

在我的数据库中,我制作了苹果、联想和四种型号[MacBook Pro 13.0、MacBook Pro 15.0、T440、T450、T540p],每种型号都有10台笔记本电脑,但当我计算时,我得到MacBook的总数为20,联想的总数为30,我需要将每种型号都计算为

MacBookPro 13.0”-10 MacBookPro 15.0”-10 T440--10 T450--10 T540p--10

通过下面的查询,我得到了下表

cnt=obj.objects.filter(Model\uu in=mac).count()

请帮助我如何编写表2的查询


我认为一个简单的群组将返回您的计数:

from django.db.models import Count

stnd = obj.objects.filter(AssetID__startswith='laptop').values('Model').annotate(count=Count('Model'))

dev = obj.objects.filter(AssetID__startswith='developer').values('Model').annotate(count=Count('Model'))

mac = obj.objects.filter(Make__startswith='Apple').values('Model').annotate(count=Count('Model'))

desk = obj.objects.filter(AssetID__startswith='laptop').values('Model').annotate(count=Count('Model'))

context = {'stnd': stnd, 'dev': dev, 'mac': mac, 'desk': desk, }


return render(request, 'App/home.html', context)

# Template

{% for key, value in mac.items %}
    {{ key }}: {{ value }}
{% endfor %}
它应该呈现如下内容:

Model: MacBook Pro 13.0
count: 10

Model:  MacBook Pro 15.0
count: 10
如果你有更好的方法来确定那是什么样的产品,那就简单多了。例如,如果您可以通过
Make
确定产品的制造商,那么您可以通过多列进行分组:

obj.objects.values('Make', 'Model').values(count=Count('Model'))
它被称为。
Model: MacBook Pro 13.0
count: 10

Model:  MacBook Pro 15.0
count: 10
obj.objects.values('Make', 'Model').values(count=Count('Model'))