鉴于以下模型:
class EmailVerification(models.Model):
user = models.ForeignKey(User, related_name='email_verifications')
token = models.CharField(max_length=30)
email = models.CharField(max_length=200)
expiry = models.DateTimeField()
verified = models.BooleanField(default=False)
我想过滤至少有一封经过验证的电子邮件的User
,例如:
User.objects.filter(num_verified_emails__gt=0)
其中:
num_verified_emails = EmailVerification.objects.filter(user=user, verified=True).count()
有没有办法在不使用自定义SQL的情况下完成此任务?
非常感谢。
答案 0 :(得分:0)
您稍微过度复杂了查询:您想要的是至少有一个EmailVerification且验证为True的用户。这可以通过简单的连接来完成:
User.objects.filter(email_verifications__verified=True)
如果您确实需要过滤实际验证过的电子邮件数量,可以使用注释,但这里没有必要。