如何找到所有具有 field: "username"与其剥离"username"不等效的实例



在伪查询中,它看起来像这样:

User.objects.filter(username != username.strip())

与此搜索匹配的用户名示例:
"你好">
"你好">
"你好">

与此搜索不匹配的用户名示例:
"你好">
"你好世界">

示例并不详尽(例如,空白可以是制表符、换行符等形式(。

为什么在数据库中使用前导空格和尾随空格存储用户名?在插入它们之前对它们进行修剪,而不是在数据库中允许脏数据。

但要直接回答您的问题,您不需要使用extra来进行正则表达式查找,因为查询集API本身就支持它

这应该做你想做的:

User.objects.filter(username__regex=r"s*" + user + r"s*")

SQLLite上的情况有点混乱,本机不支持正则表达式查找,但它仍然可以工作。

可以使用额外的。这就是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=' '))

相关内容

  • 没有找到相关文章

最新更新