Django запрашивает, как писать: WHERE field LIKE '10__8__0__'?

Существует содержит метод, но это означает: WHERE field LIKE '%10%'. И мне нужно точно WHERE field LIKE '10__8__0__'.

Спасибо!

EDIT:

Я имею в виду, что строка '10xx8xx0xx', где x - любой символ

Ответ 1

Вы можете сделать это с помощью django-like:

MyModel.objects.filter(field__like='10%8%0%')

Также я создал связанный билет на сайте проекта Django

Ответ 2

Самый простой способ выполнить поиск, который вы намереваетесь сделать, - это регулярное выражение:

MyModel.objects.filter(field__regex=r'^10..8..0..$')

Edit:

Мое решение, возможно, намного медленнее, чем LIKE. Проблема состоит в том, что ORM django не позволяет легко получить доступ к LIKE. Было бы проще, если бы startswith или endswith были достаточными для ваших целей.

Ответ 3

Вы можете использовать extra, чтобы сделать это:

MyModel.objects.extra(where=["column_name LIKE '%10%"])

Обратите внимание, что column_name - это имя столбца в базе данных, а не имя поля в вашей модели Django. Во многих случаях имя поля и имя столбца будут одинаковыми, но если они отличаются, позаботьтесь о том, чтобы использовать имя столбца.

Ответ 4

В SQL вы можете запросить его так:

WHERE field LIKE '10??8??0??'

Попробуйте использовать фильтр Django.