我有一堆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>
或者更好的是,如果它可以返回用户拥有的引荐数量,那就太好了。
有什么想法吗?
答案 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而不必注释东西(假设我不需要计数)。