【问题标题】:Is django model field lookup_type 'contains' case-sensitive or insensitive..?django模型字段lookup_type“包含”区分大小写还是不区分大小写..?
【发布时间】:2020-08-29 09:29:11
【问题描述】:

根据文档,“包含”字段查找区分大小写,“图标包含”不区分大小写,但在查询时我看不到任何区别。

>>> from users.models import SnetUser
>>> SnetUser.objects.get(email__contains='Satti')
<SnetUser: satti>
>>> SnetUser.objects.get(email__contains='satti')
<SnetUser: satti>
>>> obj = SnetUser.objects.get(email__contains='satti')
>>> obj.email
'satti@gmail.com'

两者的结果相同。

注意:我在本地使用 django 的 SQLite DB

【问题讨论】:

    标签: django sqlite django-models django-database django-model-field


    【解决方案1】:

    这个案例写在docs

    contains 字段查找正在转换为 LIKE 子句,在 SQLite 中它是不区分大小写的

    如果您想让LIKE 子句区分大小写,您需要使用以下PRAGMA

    PRAGMA case_sensitive_like = true;

    >>> from django.db import connection
    
    >>> with connection.cursor() as cursor:
    ...     cursor.execute('PRAGMA case_sensitive_like = true;')
    
    >>> SnetUser.objects.get(email__contains='Satti')
    <QuerySet []>
    

    【讨论】:

      猜你喜欢
      • 2017-09-02
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 2014-08-08
      • 2020-02-18
      • 2023-04-02
      相关资源
      最近更新 更多