【发布时间】:2019-04-18 23:51:00
【问题描述】:
tltr
考虑电子邮件列表:
list = ['a@a.com', 'b@a.com', 'b@a.com', 'a@a.com', 'c@a.com', 'a@a.com']
考虑使用这些电子邮件的用户查询集,我如何使用注释来计算此列表中用户电子邮件的出现次数?
如果我试试这个:
users = User.objects.all()
users.values('email').annotate(email_in_list=Count('email))
每个用户的结果是1。
我希望每个用户都有这些结果:
a@a.com - 3
b@a.com - 2
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)
现在我如何查看有多少被推荐用户有推荐人?
我试过这个没有成功:
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)
编辑:考虑 Count()
我试过这个:
referer_users.values('user__email').annotate(refered_num=count('user__email'))
但refered_num 的值始终等于 1,这是合乎逻辑的,因为在 refered_num 查询中,我们只有 User 对象,每个对象都有一封电子邮件。
如何计算 refered_user 列表中引用者电子邮件的出现次数并在我的 referer_users 查询中对其进行注释?
【问题讨论】:
-
你能分享你的模型吗?
-
我已经编辑了我的问题,包括模型
标签: python django django-orm