考虑电子邮件列表:
list = ['a@a.com', 'b@a.com', 'b@a.com', 'a@a.com', 'c@a.com', 'a@a.com']
考虑到使用这些电子邮件的用户的查询集,如何使用annotate来计算此列表中用户电子邮件的出现次数?你知道吗
如果我试试这个:
users = User.objects.all()
users.values('email').annotate(email_in_list=Count('email))
结果是每个用户的1
。
我希望每个用户都能得到以下结果:
你知道吗地址:a@a.com-三
你知道吗邮箱:b@a.com-二
你知道吗邮箱:c@a.com-1个
我想看看有多少被引用的用户有一个用户:
refered_user = Profile.objects.filter(user__groups__name="Refered")
list = refered_user.values_list('referer_email')
# Getting all the referers who actually had refered users
referer_users = Profile.objects.filter(user__groups__name="Referer", user__email__in=list)
现在我如何才能看到有多少被引用的用户有一个referer?你知道吗
我试过但没有成功:
counter = Counter(refered_user)
referer_users.values('user__email').annotate(refered_num=counter['user__email'])
根据要求,以下是模型:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
referer_email = models.CharField(verbose_name='Email Referer', max_length=99, blank=True)
我试过这个:
referer_users.values('user__email').annotate(refered_num=count('user__email'))
但是refered_num
的值总是等于1,这是合乎逻辑的,因为在refered_num
查询中,我们只有每个用户对象有一封电子邮件。你知道吗
如何计算referer电子邮件在refered_user
列表中的出现次数,并在referer_users
查询中对其进行注释?你知道吗
我想你是在加
order_by('id')
,这就是为什么它会加1。添加顺序时,它也会添加到group by
字段。你知道吗好吧,您不会用Counter来完成,这是一个用于计算现有Python集合中不同项的Python类。您需要使用Django
Count
函数:相关问题 更多 >
编程相关推荐