使用循环过滤查询集

Azd*_*325 1 django django-models django-orm

我有初始查询集,我循环这个

stats = {}
queryset = Item.objects.all()
for sub in Subject.objects.all():
        stats[str(sub.id)] = queryset.filter(subjects=sub.id).count()
Run Code Online (Sandbox Code Playgroud)

如何在不经常点击数据库的情况下做到这一点?

sta*_*alk 5

寻找django聚合:

from django.db.models import Count

stats = Subject.objects.annotate(count=Count('item'))
Run Code Online (Sandbox Code Playgroud)

现在每个stats对象都有count字段:

stats[0].count
Run Code Online (Sandbox Code Playgroud)