我如何找到所有具有字段的实例:"username" 不等同于其剥离的 "username"
How do I find all instances that have field: "username" inequivalent to its stripped "username"
在伪查询中,它看起来像这样:
User.objects.filter(username != username.strip())
与此搜索匹配的示例用户名:
"hello "
“你好”
“你好”
与此搜索不匹配的示例用户名:
"hello"
"hello world"
示例并不详尽(即空格可以是制表符、换行符等形式)。
extra可以用。这就是 PostgreSQL 的样子:
User.objects.extra(where=["username != regexp_replace(username, '^\s+|\s+$', '', 'g')"])
from django.db.models import Q
User.objects.filter(Q(username__startswith=' ') | Q(username__endswith=' '))
为什么要在数据库中存储前导空格和尾随空格的用户名? Trim 在你插入它们之前它们而不是在你的数据库中允许脏数据。
但是要直接回答您的问题,您不需要使用 extra
进行正则表达式查找,因为查询集 API natively supports it.
这应该可以满足您的要求:
User.objects.filter(username__regex=r"\s*" + user + r"\s*")
SQLLite 上的事情变得有点混乱,它本身不支持正则表达式查找,但它仍然有效。
在伪查询中,它看起来像这样:
User.objects.filter(username != username.strip())
与此搜索匹配的示例用户名:
"hello "
“你好”
“你好”
与此搜索不匹配的示例用户名:
"hello"
"hello world"
示例并不详尽(即空格可以是制表符、换行符等形式)。
extra可以用。这就是 PostgreSQL 的样子:
User.objects.extra(where=["username != regexp_replace(username, '^\s+|\s+$', '', 'g')"])
from django.db.models import Q
User.objects.filter(Q(username__startswith=' ') | Q(username__endswith=' '))
为什么要在数据库中存储前导空格和尾随空格的用户名? Trim 在你插入它们之前它们而不是在你的数据库中允许脏数据。
但是要直接回答您的问题,您不需要使用 extra
进行正则表达式查找,因为查询集 API natively supports it.
这应该可以满足您的要求:
User.objects.filter(username__regex=r"\s*" + user + r"\s*")
SQLLite 上的事情变得有点混乱,它本身不支持正则表达式查找,但它仍然有效。