如何在Django的查询集中过滤空值?

3

我希望在电子邮件列中过滤掉空值。

所以我尝试了这个方法:

users = User.objects.filter(email__iexact='')

然而,记录为空值时不会显示。

有人知道是为什么吗?

模型为:

class User(models.Model):
    email = models.EmailField(blank=True)

这样怎么样?user_queryset = User.objects.filter(email__isnull=True) - JPG
我尝试过了,但是只显示了空值。 谢谢! - richasonson
你需要重新表达你的问题。@JerinPeterGeorge所写的实际上回答了你的问题。如果你想显示所有非空列,请看下面的答案。 - Demetris
1
@Demetris 如果我错了,请纠正我,但是null和empty是不同对待的,对吗?null=True会与__isnull=True一起使用,或者我漏掉了什么吗? - Nie Selam
谢谢,我的认识是错误的。 - richasonson
2个回答

5
如果您想显示所有不为空的电子邮件(过滤掉空值),那么可以使用以下方法来排除它们:
users = User.objects.exclude(email__isnull=True)

如果您想获取所有空电子邮件值的列,请使用以下方法

users = User.objects.filter(email__isnull=True)

1
声明模型:
class User(models.Model):
    email = models.EmailField(null=True)

然后:
users = User.objects.filter(email__isnull=True)

如果您想排除空值,则应这样做:

users = User.objects.exclude(email__isnull=True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接