首页 > 解决方案 > django 多对多查询集

问题描述

我有两个模型:

1-----

class Account(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(unique=True)
    name = models.CharField(max_length=150)
    phone = models.CharField(max_length=50)
    picture = models.ImageField(blank=True, null=True , upload_to='profile' )
    profession = models.ManyToManyField(Profession)

2-----

class Profession(models.Model):
    profession = models.CharField(max_length=50)

我想显示我拥有的所有职业,同时我想显示他们拥有该职业的帐户数量

喜欢这张照片 在此处输入图像描述

标签: pythondjangodjango-modelsdjango-queryset

解决方案


您可以像这样注释每个职业名称:

Profession.objects.values('profession').annotate(num_accounts=Count('account'))

这将为您提供如下输出:

<ProfessionQuerySet [{'profession': 'SomeProfessionA', 'num_accounts': 22}, {'profession': 'SomeProfessionB', 'num_accounts': 20}, ...>

推荐阅读