选择具有推介的不同用户

时间:2010-05-20 22:20:47

标签: database django django-models

我有一堆Users。由于Django实际上并没有让我扩展默认的User模型,因此每个模型都有Profiles。配置文件具有referred_by字段(用户FK)。我正在尝试获取> = 1推荐的用户列表。这是我到目前为止所得到的

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

这给了我一个推荐用户的ID列表......但我需要它是 distinct ,我想要User对象,而不是他们的ID。< / p>

或者更好的是,如果它可以返回用户拥有的引荐数量,那就太好了。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我花了很长时间来解决这个问题,但我想我终于搞清楚了:

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而不必注释东西(假设我不需要计数)。