Django __in查找看起来不是 None 值



考虑我有一个名为Subject的模型,我想根据值列表筛选值。请考虑以下列表。

["John", "Brad", None]

当我尝试使用__in查找来过滤结果时,它不会查找None值。例如

Subject.objects.filter(user__in=["John", "Brad", None])

这将为John和Brad提供查询集,但不会提供None。我在这里缺少什么?有人能帮我吗

NULL数据库中的s(django中的None(不是必需值,因此它们需要不同的方法:

Subject.objects.filter(Q(user__in=["John", "Brad", ]) | Q(user__isnull=True,))

尝试像这样的过滤

from django.db.models import Q
Subject.objects.filter(Q(user__in=["John", "Brad"]) | Q(user__isnull=True))

使用Q对象更适合于此:

Subject.objects.filter(Q(user__in=["John", "Brad"]) | Q(user__isnull=True))

您可以将Q objects用于OR, AND and NOT操作。Q对象为您提供了对查询的where子句的完全控制。

您的查询集将类似于:

from django.db.models import Q
Subject.objects.filter(Q(user=None) | Q(user__in=["John", "Brad"]))

您可以以更复杂的方式组合Q对象以生成复杂的查询。

相关内容

  • 没有找到相关文章

最新更新