我正在使用Django ORM系统。我有学生模型,每个学生都有自己喜欢的工作状态。就像很少有学生想在“Mahrashtra”州工作,其他人想在其他州工作。
让我们假设我想搜索那些喜欢工作状态为“加州”的学生。我做了以下查询
result= Students.object.filter(prefered_state='California')
当然我得到了理想的结果,但我想把那些尚未进入首选状态的学生纳入其中。表示学生的状态为 Null 或''。因此,除了使用 OR 语句之外,没有任何方法可以指定将Null结果包括在标准之外。因为我有许多其他领域的标准,我不想包含OR xyz为每个字段为空
答案 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))