如果我在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