我在数据对象中有一个字段,可以为null或设置为某个整数。我希望,给定一个整数,过滤所有具有该整数值的对象或者无:
MyElements.objects.all().filter(value__in=[myInt, None])
但是,此行不适用于具有空值的元素。更确切地说:
MyElements.objects.all().filter(value__in=[None])
什么都不返回。而
MyElements.objects.all().filter(value = None)
返回空值元素。
如何正确重写原始查询(涉及myInt)?
答案 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))