我有first_name, last_name和别名(可选),我需要搜索。因此,我需要一个查询来给我所有有别名集的名称。
只要我能做到:
Name.objects.filter(alias!="")
那么,与上面的等价的是什么呢?
我有first_name, last_name和别名(可选),我需要搜索。因此,我需要一个查询来给我所有有别名集的名称。
只要我能做到:
Name.objects.filter(alias!="")
那么,与上面的等价的是什么呢?
当前回答
如果你想排除null (None),空字符串(""),以及包含空格的字符串(""),你可以使用__regex和__isnull过滤器选项
Name.objects.filter(
alias__isnull = False,
alias__regex = r"\S+"
)
alias__isnull=False排除所有空列
aliax__regex = r"\S+"确保列值包含至少一个或多个非空格字符。
其他回答
从Django 1.8,
from django.db.models.functions import Length
Name.objects.annotate(alias_length=Length('alias')).filter(alias_length__gt=0)
Name.objects.filter(alias__gt='',alias__isnull=False)
你可以简单地这样做:
Name.objects.exclude(alias="").exclude(alias=None)
其实就是这么简单。Filter用于匹配,exclude用于匹配除指定内容以外的所有内容。这将在SQL中计算为NOT alias= " AND alias IS NOT NULL。
这是另一种简单的方法。
Name.objects.exclude(alias=None)
如果你想排除null (None),空字符串(""),以及包含空格的字符串(""),你可以使用__regex和__isnull过滤器选项
Name.objects.filter(
alias__isnull = False,
alias__regex = r"\S+"
)
alias__isnull=False排除所有空列
aliax__regex = r"\S+"确保列值包含至少一个或多个非空格字符。