Django 模型字段 lookup_type 'contains' 区分大小写还是不区分大小写......?
Is django model field lookup_type 'contains' case-sensitive or insensitive..?
根据文档 'contains' 字段查找区分大小写,而 'icontains' 不区分大小写,但我在查询时没有发现任何区别。
>>> 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 数据库
这个案例写在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 []>
根据文档 'contains' 字段查找区分大小写,而 'icontains' 不区分大小写,但我在查询时没有发现任何区别。
>>> 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 数据库
这个案例写在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 []>