如何计算所有用户的反向关系

时间:2014-10-06 15:12:07

标签: python django django-orm

使用Django ORM我想在Company上创建一个返回User count的方法。

这就是我的尝试(参见company_user_count方法):

用户模型:

class AppUser(AbstractBaseUser):
    email = models.EmailField(
        verbose_name='email address',
        max_length=254,
        unique=True,
        db_index=True,
    ) 
    company = models.ForeignKey('Company', related_name="users")

公司型号:

class Company(models.Model):
    name = models.CharField(max_length=60)


    def company_user_count(self):
        return Company.objects.filter(users__company=self.company).annotate(user_count=Count('users'))

上面似乎返回一个实际的对象,而不是一个简单的count(int)

3 个答案:

答案 0 :(得分:4)

def company_user_count(self):
    return self.users.count()

答案 1 :(得分:1)

您无需编写自定义方法来计算属于公司的用户。

只需获取公司的所有用户并对其执行count()

user_count = Company.objects.get(name='fooCompany').users.count()

答案 2 :(得分:1)

试试这个:

def company_user_count(self):
    return self.users.count()