django模型字段lookup_type'contains'是区分大小写的还是不区分大小写的?

问题描述 投票:0回答:1

根据文档,'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
'[email protected]'

两者的结果是一样的。

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

django django-models django-database django-model-field
1个回答
1
投票

这个大小写在 文件.

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 []>
© www.soinside.com 2019 - 2024. All rights reserved.