我不确定这里发生了什么。我可以看到我的数据库中有几封电子邮件,但我似乎无法过滤它们。 例如,当我运行
qs1 = EmailActivation.objects.all()
>>> print(qs1)
<EmailActivationQuerySet [<EmailActivation: a@yahoo.com>, <EmailActivation: b@gmail.com>]>
但是,当我运行以下内容时,我什么都没得到
qs2 = EmailActivation.objects.all().filter(email='a@yahoo.com')
>>> print(qs2)
<EmailActivationQuerySet []>
我的模型看起来像这样:
class EmailActivation(models.Model):
user = models.ForeignKey(User)
email = models.EmailField()
我希望我的qs2返回&#39; a@yahoo.com'因为它在数据库中,如qs1所示。有人看到我做错了吗?
谢谢,
编辑:仔细观察我看到以下内容:
qs2 =
EmailActivation.objects.all().filter(email__icontains='a@yahoo.com')
>>> print(qs2)
<EmailActivationQuerySet [<EmailActivation: a@yahoo.com>]>
这是否意味着我的电子邮件中有一些空格或隐藏字符?我想像使用icontains进行过滤会很糟糕,因为有人可能会&#39; aa@yahoo.com'。我该怎样做才能去掉任何隐藏的角色?
答案 0 :(得分:1)
如果您在过滤器上明确指定完全匹配,那么您应该得到您所追求的结果。我不这么认为,这里有任何隐藏的角色......
>>> EmailActivation.objects.all().filter(email__exact='a@yahoo.com')
<QuerySet [<EmailActivation: EmailActivation object (1)>]>