2013-12-10 29 views
7

我在数据对象中有一个字段,可以是null或设置为某个整数。我想,给定一个整数,过滤所有与整数值或没有对象:Django - 按“特定值或无”过滤

MyElements.objects.all().filter(value__in=[myInt, None]) 

但是,此行没有与空值的元件的工作。更确切地说:

MyElements.objects.all().filter(value__in=[None]) 

什么也没有返回。而

MyElements.objects.all().filter(value = None) 

返回空值元素。

如何正确地重写原始查询(涉及myInt)?

回答

7

您可以使用Q values,让你可以在Django的查询集多个条款结合起来。

您的查询集将是这样的:

from django.db.models import Q 
MyElements.objects.all().filter(Q(value=None) | Q(value=myInt)) 
+0

多亏了你们俩,我不知道的Q值,直到如今。 –

4

您可以尝试OR声明:

from django.db.models import Q 
MyElements.objects.filter(Q(value__isnull=True) | Q(value=myInt)) 

django documentation