我需要获得在其他两个模型中被引用为ForeignKey
的用户列表。当查询达到这种复杂性时,我仍然有点不清楚。
模型:
class Page(models.Model):
user = models.ForeignKey(User)
class EmailSent(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=200)
在英语中,我想要得到的是:10个活跃用户,他们有0个页面,从来没有收到过名称为check_in
的电子邮件。
where 's where I am:
users = User.objects.filter(is_active=1).annotate(page_count=Count('pages')).filter(page_count=0)[10]
但不确定如何做什么是本质:
email_sent = EmailSent.objects.filter(user=user, name='check_in')
任何想法?
得到你想要的一个可能的方法是:
users = User.objects.filter(is_active=1).annotate(page_count=Count('pages')).filter(page_count=0)
EmailSent.objects.filter(user__in=users, name='check_in')[10]
users = User.objects.filter(is_active=1).annotate(page_count=Count('pages')).filter(page_count=0)
users.emailsent_set.all()[10]
尝试以下操作:
users = User.objects.filter(is_active=1) .exclude(emailsent__name='check_in') .extra(select={'page_count': "select count(*) from YOURAPP_page where user_id = auth_user.id"}, where=['page_count 0'])[:10]