2013-04-07 42 views
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的錯誤?

回答

1

據我所知,它 django中的一個錯誤。解決方法是: