Выберите отдельных пользователей с рефералами - PullRequest
0 голосов
/ 21 мая 2010

У меня есть куча Users. Поскольку Django не позволяет мне расширять модель по умолчанию User, у каждого из них есть Profiles. Профили имеют поле referred_by (от FK до пользователя). Я пытаюсь получить список пользователей с> = 1 рефералом. Вот что у меня так далеко

Profile.objects.filter(referred_by__isnull=False).values_list('referred_by', flat=True)

Что дает мне список идентификаторов пользователей, у которых есть рефералы ... но мне нужно, чтобы он был отличным , и мне нужен объект User, а не их идентификатор.

А еще лучше, было бы неплохо, если бы он мог вернуть количество рефералов, которое есть у пользователя.

Есть идеи?

1 Ответ

1 голос
/ 21 мая 2010

Мне потребовалось много времени, чтобы обернуть голову вокруг этого, но, думаю, я наконец-то понял это:

affiliates = User.objects.annotate(num_referrals=Count('referrals')).filter(num_referrals__gt=0)

Я не думал, что смогу использовать обратную связь

 referred_by = models.ForeignKey(User, null=True, blank=True, related_name='referrals')

в Count(), и я не думаю, что вы можете использовать аннотированное значение в фильтре ... это довольно круто. Я все еще хотел бы, чтобы вы могли использовать GROUP BY без необходимости комментировать материал (при условии, что мне не нужен счетчик).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...