【问题标题】:Python contains and icontains both return case insensitive resultsPython contains 和 icontains 都返回不区分大小写的结果
【发布时间】:2019-12-13 06:37:38
【问题描述】:

我有一个非常奇怪的案例,我不确定我是否理解。我正在使用 field__contains 过滤数据,但得到不区分大小写的结果。举个例子:

输入数据:

{
    "id": 2,
    "last_login": null,
    "is_superuser": false,
    "username": "slappy",
    "first_name": "don",
    "last_name": "sweeney",
    "email": "don@bruins.com",
    "is_staff": false,
    "is_active": true,
    "date_joined": "2019-12-09T09:07:11.897502Z",
    "groups": [],
    "user_permissions": []
}

搜索:

query = { 'email__contains' : 'DON' }
data_set = data_set.filter(Q(**query))
return data_set

尽管大小写明显错误,结果仍会返回条目。我检查了其他过滤器类型,它们按预期工作:

搜索 2:

query = { 'username__exact' : 'SLAPPY' }
data_set = data_set.filter(Q(**query))
return data_set

正如预期的那样,此搜索不会产生任何结果。

我在这里遗漏了什么吗?这可能是根本原因吗?我希望 contains 区分大小写,icontains 不区分大小写,否则为什么两者会存在?

【问题讨论】:

    标签: python django django-queryset


    【解决方案1】:

    我认为该信息已通过documentation of contains 提供:

    SQLite 用户

    SQLite 不支持区分大小写的 LIKE 语句;包含行为 像 SQLite 的图标。请参阅database note 了解更多信息。

    【讨论】:

    • 谢谢,由于某种原因,甚至没有考虑后面的 sqlite,谢谢
    猜你喜欢
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 2017-03-17
    • 2023-03-24
    相关资源
    最近更新 更多