나는이더 엄격한 쿼리를 사용하면 더 많은 결과를 얻을 수 있습니까?
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
예,하지만 시도 만 했습니까? – sebpiq