Ответ 1
Вы можете сделать это с помощью django-like:
MyModel.objects.filter(field__like='10%8%0%')
Также я создал связанный билет на сайте проекта Django
Существует содержит метод, но это означает: WHERE field LIKE '%10%'
. И мне нужно точно WHERE field LIKE '10__8__0__'
.
Спасибо!
EDIT:
Я имею в виду, что строка '10xx8xx0xx'
, где x - любой символ
Вы можете сделать это с помощью django-like:
MyModel.objects.filter(field__like='10%8%0%')
Также я создал связанный билет на сайте проекта Django
Самый простой способ выполнить поиск, который вы намереваетесь сделать, - это регулярное выражение:
MyModel.objects.filter(field__regex=r'^10..8..0..$')
Edit:
Мое решение, возможно, намного медленнее, чем LIKE. Проблема состоит в том, что ORM django не позволяет легко получить доступ к LIKE
. Было бы проще, если бы startswith
или endswith
были достаточными для ваших целей.
Вы можете использовать extra
, чтобы сделать это:
MyModel.objects.extra(where=["column_name LIKE '%10%"])
Обратите внимание, что column_name
- это имя столбца в базе данных, а не имя поля в вашей модели Django. Во многих случаях имя поля и имя столбца будут одинаковыми, но если они отличаются, позаботьтесь о том, чтобы использовать имя столбца.
В SQL вы можете запросить его так:
WHERE field LIKE '10??8??0??'
Попробуйте использовать фильтр Django.