【问题标题】:Select distinct users with referrals选择具有推荐的不同用户
【发布时间】:2010-05-20 22:20:47
【问题描述】:

我有一堆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。

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

有什么想法吗?

【问题讨论】:

标签: database django django-models


【解决方案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 而无需注释内容(假设我不需要计数)。

【讨论】:

    猜你喜欢
    • 2012-05-04
    • 2012-08-14
    • 1970-01-01
    • 2016-09-03
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多