我如何找到所有具有字段的实例:"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 上的事情变得有点混乱,它本身不支持正则表达式查找,但它仍然有效。