У меня есть запрос, который выглядит так
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, если ни один из привлеченных пользователей не присоединился в этот период времени, но это не так).