当字段为空或空字符串时如何过滤字段?
我只能检查它何时为空:
DataDictionary.objects.filter(parentlevel__isnull=True)
Null或null字符串怎么样?
答案 0 :(得分:0)
要回答文字问题,您可以使用Q
个对象将空字符串添加到过滤器查询中:
from django.db.models import Q
q = Q(parentlevel__isnull=True)
q |= Q(parentlevel='')
DataDictionary.objects.filter(q)
但是,为了回答问题背后的问题,文档建议首先通过不同地初始化字段来避免这种尴尬的情况:
避免在基于字符串的字段(例如
CharField
和TextField
)上使用null。如果基于字符串的字段具有null=True
,则表示它有两个可能的值为"没有数据":NULL,以及空字符串。在大多数情况下,为"没有数据提供两个可能的值是多余的;" Django约定是使用空字符串,而不是NULL。
因此,我建议您在DataDictionary
模型上进行此更改,并添加相应的数据迁移以将空值转换为空字符串。
答案 1 :(得分:0)
您可以使用Q
组合查询,如下所示:
DataDictionary.objects.filter(Q(parentlevel__isnull=True) | Q(parentlevel=''))