Django:使用gte integer对带注释的值进行筛选,以将结果与SQL中的True进行比较

Django:使用gte integer对带注释的值进行筛选,以将结果与SQL中的True进行比较,django,django-queryset,Django,Django Queryset,我想在Django中创建QuerySet,它将团队限制为只有两个以上活跃成员的团队。我的models.py中有以下UserProfile类: class UserProfile(models.Model): user = models.OneToOneField( User, related_name='userprofile', unique=True, null=False, blank=False, ) te

我想在Django中创建QuerySet,它将团队限制为只有两个以上活跃成员的团队。我的models.py中有以下UserProfile类:

class UserProfile(models.Model):
  user = models.OneToOneField(
      User,
      related_name='userprofile',
      unique=True,
      null=False,
      blank=False,
      )
   team = models.ForeignKey(
      Team,
      related_name='users',
      verbose_name=_(u"Tým"),
      null=False, blank=False)
...
查询如下:

Team.annotate(team_member_count=Sum('users__user__is_active')).filter(team_member_count__gte = 2)
问题是,它会导致SQL查询,其中为True,而不是值2:

SELECT `dpnk_team`.`id`, `dpnk_team`.`name`, `dpnk_team`.`subsidiary_id`, `dpnk_team`.`coordinator_id`, `dpnk_team`.`invitation_token`, SUM(`auth_user`.`is_active`) AS `team_member_count` FROM `dpnk_team` LEFT OUTER JOIN `dpnk_userprofile` T4 ON (`dpnk_team`.`id` = T4.`team_id`) LEFT OUTER JOIN `auth_user` ON (T4.`user_id` = `auth_user`.`id`) GROUP BY `dpnk_team`.`id` HAVING SUM(`auth_user`.`is_active`) >= True ORDER BY `dpnk_team`.`name` ASC 选择“dpnk团队”。`id`、`dpnk团队`、`name`、`dpnk团队`、`subsidiary\u id`、`dpnk\u团队`、`coordinator\u id`、`dpnk\u团队`、`investment\u token`、, SUM(`auth\u user`.`is\u active`)作为`team\u member\u count` 来自“dpnk_团队” 左外连接'dpnk\u userprofile'T4 ON('dpnk\u team`.'id`=T4.'team\u id`) 左外连接'auth\u user'(T4.'user\u id`='auth\u user`.'id`) 由“dpnk_团队”分组。“id” 具有SUM(`auth\u user`.`is\u active`)>=True 由“dpnk_团队”订购。“名称”ASC 也就是说,团队中只有1名活动成员(True的评估结果为1)。虽然“is_active”字段被定义为布尔值,“team_member_count”的计算结果为整数值,因此我希望进一步将其测试为整数

我正在使用MySQL数据库,并在Django 1.4.3和1.5.1中进行了尝试

我是否遗漏了什么,是否应该以不同的方式编写查询,或者这是Django的一个bug?

据我所知,这是Django的一个bug。解决办法是:

 (Team.objects.filter(users__user__is_active=True)
              .annotate(team_member_count=Count('users'))
              .filter(team_member_count__gte=1))