【发布时间】:2022-01-26 23:29:14
【问题描述】:
如果我在 Django 模型中有一个 CharField,并且我尝试使用带有 LIKE 运算符的字符串模式来过滤它,例如:
MyModel.objects.filter(text__like='he_lo')
Django 返回错误:
django.core.exceptions.FieldError: Unsupported lookup 'like' for CharField or join on the field not permitted.
但是,如果我使用 manage.py dbshell 运行原始 SQL:
select * from myapp_mymodel where text like 'he_lo';
它运行得很好。
为什么 Django 不允许在它的 ORM 中进行模式匹配,即使 Sqlite 支持它?
【问题讨论】:
-
this 回答你的问题了吗?
-
@RichardNeumann 有点像。 Django 的
__contains是LIKE的包装,而不是简单的别名。 -
@RichardNeumann 这个问题也不是指 Sqlite。
__contains后缀似乎也不支持 SQL 通配符,尽管 Sqlite 支持它们。