根据文档,'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。
这个大小写在 文件.
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 []>