首页 > 解决方案 > 从另一个表中获取每条记录的总数

问题描述

嗨,我有 2 张这样的桌子

class Category(models.Model):
     typeName= models.CharField(max_length=50 , null=False, blank=False ,choices=typeChoice )
     typeImage =models.ImageField( blank=True, null=True , upload_to='ActivityType')


class Products(Activity):
    activity = CharField(max_length=50 , null=False, blank=False)
    typeofproduct = models.ForeignKey(Category , on_delete=models.CASCADE)

现在在模板中,我想计算每个产品的总数Category

就像我做的那样 Category.objects.all() 。现在对于每个类别,产品表中每个产品的计数。

标签: django

解决方案


您可以.annotate(..)[Django-doc]Category s :

from django.db.models import Count

Category.objects.annotate(
    num_products=Count('products')
)

从此查询集中产生的Category对象将具有包含产品数量的额外属性。.num_products

您还可以使用View对象的存在对其进行注释,例如:

from django.db.models import Count, Exists, OuterRef

Category.objects.annotate(
    num_products=Count('products'),
    is_viewed=Exists(View.objects.filter(category=OuterRef('pk')))
)

推荐阅读