我有一個查詢,看起來像這樣更嚴格的查詢會產生更多結果?
affiliates = User.objects.annotate(referral_count=Count('referrals'))
.filter(referral_count__gt=0)
但是,當我限制它更加入referrals__user__date_joined__gt=start_date
到過濾器,我得到更高的轉診計數。
我試圖計算用戶在一段時間內提及的人數。
相關模型是這樣的:
class Profile(models.Model):
user = models.ForeignKey(User, unique=True, related_name='profile')
referred_by = models.ForeignKey(User, null=True, blank=True,
related_name='referrals')
相反,當我嘗試這樣的:
affiliates = User.objects \
.exclude(referrals__user__date_joined__lte=sd, \
referrals__user__date_joined__gt=ed) \
.annotate(referral_count=Count('referrals')) \
.filter(referral_count__gt=0)
的exclude
聲明似乎什麼也不做......的計數不更改(如果在該時間段內沒有參與用戶加入,則應爲0,但不是)。
'用戶'沒有'referenced_by'字段;在'Profile'對象上。 'related_name'('referrals')是出現在'User'對象上的,這就是爲什麼我必須使用它。 – mpen 2010-05-29 01:56:36
是的,但你只試過? – sebpiq 2010-05-29 10:01:16