Django模型QuerySet在过滤时不返回

时间:2018-03-07 01:28:00

标签: django django-queryset

我不确定这里发生了什么。我可以看到我的数据库中有几封电子邮件,但我似乎无法过滤它们。 例如,当我运行

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'。我该怎样做才能去掉任何隐藏的角色?

1 个答案:

答案 0 :(得分:1)

如果您在过滤器上明确指定完全匹配,那么您应该得到您所追求的结果。我不这么认为,这里有任何隐藏的角色......

>>> EmailActivation.objects.all().filter(email__exact='a@yahoo.com')
<QuerySet [<EmailActivation: EmailActivation object (1)>]>
相关问题