Django - 按“特定值或无”过滤

时间:2013-12-10 08:25:14

标签: django

我在数据对象中有一个字段,可以为null或设置为某个整数。我希望,给定一个整数,过滤所有具有该整数值的对象或者无:

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

但是,此行不适用于具有空值的元素。更确切地说:

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

什么都不返回。而

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

返回空值元素。

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

2 个答案:

答案 0 :(得分:12)

您可以使用Q values,它允许您在Django查询集中组合多个子句。

您的查询集将类似于:

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

答案 1 :(得分:5)

您可以尝试OR语句:

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

django documentation