0
我想在Django中製作QuerySet,它將團隊限制爲只有擁有兩個以上活動成員的團隊。我在models.py以下用戶配置類:Django:使用gte整數結果過濾帶有SQL的True的比較結果
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查詢哪裏是真正的價值,而不是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
這也給團隊只有1個活躍成員(真實評估爲1)。雖然「is_active」字段被定義爲布爾值,但「team_member_count」的值爲整數值,所以我期望它會被進一步測試爲整數。
我正在使用MySQL數據庫,並試圖用Django 1.4.3和1.5.1。
我錯過了什麼,我應該寫不同的查詢,還是這是一個Django的錯誤?