2013-12-10 65 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