如何在Django中的同一字段中过滤null和特定值?

时间:2014-07-07 21:04:50

标签: django django-models django-filters

所以这是我在我的一个模特中的一个领域:

year = models.ForeignKey(Year, blank=True, null=True)

现在,我想获取该year字段为nullspecific_year的模型的所有对象。

这就是我的尝试:

MyModel.objects.filter(year__isnull=True, year=specific_year)
MyModel.objects.filter(year__isnull=True).filter(year=specific_year)
MyModel.objects.filter(year__in=[specific_year, None])

但他们都给我一个空洞的结果。

我是Django的新手,所以也许我在这里缺少一些东西,但我在文档中找不到答案。那么如何过滤year字段为nullspecific_year的所有对象?

1 个答案:

答案 0 :(得分:2)

您可以使用Q objects for complex filtering

from django.db.models import Q

MyModel.objects.filter(Q(year__isnull=True) | Q(year=specific_year))

默认情况下,使用,或嵌套过滤会产生AND结果,而您需要OR结果,您可以使用Q