Quel est l'équivalent de cette instruction SQL dans django?
SELECT * FROM table_name WHERE string LIKE pattern;
Comment implémenter cela dans django? j'ai essayé
result = table.objects.filter( pattern in string )
Mais ça n'a pas marché. Comment mettre en œuvre cela?
python
sql
django
django-models
django-queryset
Aswin Murugesh
la source
la source
result = table.objects.filter(string__icontains='pattern')
%a%b%
.result = table.objects.filter(string__contains='a').filter(string__contains='b')
ba
ceLIKE %a%b%
qui ne le serait pas.contient et icontains mentionnés par falsetru font des requêtes comme
SELECT ... WHERE headline LIKE '%pattern%
Avec eux, vous pourriez avoir besoin de ceux-ci avec un comportement similaire: commence par , istarts avec , se termine par , iends avec
fabrication
SELECT ... WHERE headline LIKE 'pattern%
ou
SELECT ... WHERE headline LIKE '%pattern
la source
Recherche insensible à la casse pour une chaîne dans un champ.
la source
Afin de conserver l'ordre des mots comme dans l'instruction sql LIKE '% pattern%', j'utilise iregex, par exemple:
Les méthodes de chaîne sont immuables, donc votre variable de motif ne changera pas et avec. * vous rechercherez 0 ou plusieurs occurrences de n'importe quel caractère sauf les lignes de rupture.
En utilisant ce qui suit pour parcourir les mots de modèle:
l'ordre des mots dans votre modèle ne sera pas préservé, pour certaines personnes qui pourraient fonctionner mais dans le cas où j'essaierai d'imiter l'instruction sql like, j'utiliserai la première option.
la source
Cela peut être fait avec les recherches personnalisées de Django . J'ai fait la recherche dans une application de recherche de type Django . Après l'avoir installé, la
__like
recherche avec les caractères génériques%
et_
sera activée.Tout le code nécessaire dans l'application est:
la source