Как использовать сопоставление строковых шаблонов Sqlite из Django?

Если у меня есть CharField в модели Django, и я пытаюсь отфильтровать ее с помощью строкового шаблона с оператором 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 поддерживает его?

Вы можете попробовать raw запрос следующим образом:

 objs = MyModel.objects.raw(
     "SELECT * FROM myapp_mymodel WHERE text LIKE %s", ['%he_lo']
 )
 for obj in objs:
    # do something
Вернуться на верх