Qual é o equivalente a esta instrução SQL no django?
SELECT * FROM table_name WHERE string LIKE pattern;
Como faço para implementar isso no django? eu tentei
result = table.objects.filter( pattern in string )
Mas isso não funcionou. Como faço para implementar isso?
python
sql
django
django-models
django-queryset
Aswin Murugesh
fonte
fonte
result = table.objects.filter(string__icontains='pattern')
%a%b%
.result = table.objects.filter(string__contains='a').filter(string__contains='b')
ba
queLIKE %a%b%
não.contém e icontains mencionados por falsetru fazem consultas como
SELECT ... WHERE headline LIKE '%pattern%
Junto com eles, você pode precisar daqueles com comportamento semelhante: startswith , istartswith , endswith , iendswith
fazer
SELECT ... WHERE headline LIKE 'pattern%
ou
SELECT ... WHERE headline LIKE '%pattern
fonte
Pesquisa sem distinção entre maiúsculas e minúsculas para string em um campo.
fonte
Para preservar a ordem das palavras como na instrução sql LIKE '% pattern%', eu uso iregex, por exemplo:
os métodos de string são imutáveis, portanto, sua variável de padrão não será alterada e com. * você estará procurando 0 ou mais ocorrências de qualquer caractere, exceto linhas de quebra.
Usando o seguinte para iterar sobre as palavras padrão:
a ordem das palavras em seu padrão não será preservada, para algumas pessoas isso poderia funcionar, mas no caso de tentar imitar a instrução sql like usarei a primeira opção.
fonte
Isso pode ser feito com as pesquisas personalizadas do Django . Eu fiz a pesquisa em um aplicativo de pesquisa semelhante ao Django . Após a instalação, a
__like
pesquisa com os curingas%
e_
será habilitada.Todo o código necessário no aplicativo é:
fonte