如何使用Django中的Sqlite字符串模式匹配



如果我在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支持它?

您可以尝试这样的原始查询:

objs = MyModel.objects.raw(
"SELECT * FROM myapp_mymodel WHERE text LIKE %s", ['%he_lo']
)
for obj in objs:
# do something

最新更新