如何在Django ORM查询中包含null结果

时间:2016-01-28 10:36:30

标签: python mysql django

我正在使用Django ORM系统。我有学生模型,每个学生都有自己喜欢的工作状态。就像很少有学生想在“Mahrashtra”州工作,其他人想在其他州工作。

让我们假设我想搜索那些喜欢工作状态为“加州”的学生。我做了以下查询

result= Students.object.filter(prefered_state='California')

当然我得到了理想的结果,但我想把那些尚未进入首选状态的学生纳入其中。表示学生的状态为 Null ''。因此,除了使用 OR 语句之外,没有任何方法可以指定将Null结果包括在标准之外。因为我有许多其他领域的标准,我不想包含OR xyz为每个字段为空

3 个答案:

答案 0 :(得分:5)

您可以使用Q。请注意,此答案会考虑NULL值和空字符串。

from django.db.models import Q

states = ['California', '']
Item.objects.filter(Q(prefered_state__in=states)|Q(prefered_state__isnull=True))

答案 1 :(得分:0)

result = Students.object.filter(Q(prefered_state =' California')| Q(prefered_state__isnull = True))

在这里查看Q对象: https://docs.djangoproject.com/es/1.9/topics/db/queries/#complex-lookups-with-q-objects

答案 2 :(得分:0)

from django.db.models import Q

result= Students.object.filter(Q(prefered_state='California')|Q(prefered_state__is_null=True))