¿Cuál es el equivalente de esta declaración SQL en django?
SELECT * FROM table_name WHERE string LIKE pattern;
¿Cómo implemento esto en django? Lo intenté
result = table.objects.filter( pattern in string )
Pero eso no funcionó. ¿Cómo implemento esto?
python
sql
django
django-models
django-queryset
Aswin Murugesh
fuente
fuente
result = table.objects.filter(string__icontains='pattern')
%a%b%
.result = table.objects.filter(string__contains='a').filter(string__contains='b')
ba
loLIKE %a%b%
que no.contiene y los icontains mencionados por falsetru hacen consultas como
SELECT ... WHERE headline LIKE '%pattern%
Junto con ellos, es posible que necesite estos con un comportamiento similar: startswith , istartswith , endswith , iendswith
haciendo
SELECT ... WHERE headline LIKE 'pattern%
o
SELECT ... WHERE headline LIKE '%pattern
fuente
Búsqueda que no distingue entre mayúsculas y minúsculas de una cadena en un campo.
fuente
Para preservar el orden de las palabras como en la declaración sql LIKE '% pattern%' utilizo iregex, por ejemplo:
Los métodos de cadena son inmutables, por lo que su variable de patrón no cambiará y con. * buscará 0 o más apariciones de cualquier carácter excepto líneas de corte.
Usando lo siguiente para iterar sobre las palabras del patrón:
el orden de las palabras en su patrón no se conservará, para algunas personas eso podría funcionar, pero en el caso de intentar imitar la instrucción sql like, usaré la primera opción.
fuente
Esto se puede hacer con las búsquedas personalizadas de Django . He realizado la búsqueda en una aplicación de búsqueda similar a Django . Después de instalarlo, la
__like
búsqueda con%
y_
, se habilitará comodines .Todo el código necesario en la aplicación es:
fuente