Джанго ОРМ подчеркивает подстановочный знак - PullRequest
2 голосов
/ 15 марта 2019

Я искал способ использования Django ORM для использования подстановочного знака SQL и сделал что-то эквивалентное этому:

SELECT * FROM table
WHERE field LIKE 'abc_wxyz'

В настоящее время я делаю:

field_like = 'abc_wxyz'
result = MyClass.objects.extra(where=["field LIKE " + field_like])

Я уже пробовал с методами contains () и icontains (), но это не то, что мне нужно, поскольку он добавляет скобки в запрос:

SELECT * FROM table
WHERE field LIKE '%abc/_wxyz%'

Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Вы можете использовать __ regex lookup для создания более сложных выражений поиска, чем __ содержит , __ начинается с или __ заканчивается с (можно добавить «i»символ в начале каждого из них, чтобы сделать поиск регистронезависимым, как иконки).В вашем случае, я думаю,

MyClass.objects.filter(field__regex=r'^abc.wxyz$')

сделает то, что вы пытаетесь сделать.

0 голосов
/ 15 марта 2019

Вы можете использовать атрибут field__contains .

например:

MyClass.objects.filter(field__contains='abc_wxyz')

Это эквивалентно:

SELECT * FROM MyClass WHERE field LIKE 'abc_wxyz'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...