根据另一个Django模型的多个字段检索唯一Django对象的数量

我有一个定义如下的Django模型:

class Session(models.Model):
    ...
    leader = models.ForeignKey(User, related_name='leader')
    follower = models.ForeignKey(User, related_name='follower')
    ...

现在,我们有一个Session对象的QuerySet:

some_sessions = Session.objects.filter(some_criteria=True)

何获得在some_sessions的任何Session中成为leader或follower的唯一身份用户的简单计数?

例如,某个特定user可能是某些会话对象的leader,但在少数其他Session对象中却是follower。该特定user只应为所需的唯一user数贡献1。

当然,有一些幼稚的解决方案,但是出于性能原因,我想知道是否有一种解决方案,如果可能的话,可以更多地利用QuerySets的功能。

编辑:澄清一下,这是一个天真的方法,它给出了我需要的结果:

active_user_ids = set()
some_sessions = Session.objects.filter(some_criteria=True)
for session in some_sessions:
    active_user_ids.add(session.leader.id)
    active_user_ids.add(session.follower.id)
all_active_users = User.objects.filter(id__in=active_user_ids).count()

答案,参阅http://viadean.com

你可能感兴趣的:(根据另一个Django模型的多个字段检索唯一Django对象的数量)