2013-08-09 15 views
53

Qual è l'equivalente di questa istruzione SQL in django?sql equivalente "LIKE" nella query django

SELECT * FROM table_name WHERE string LIKE pattern; 

Come implementarlo in django? Ho provato

result = table.objects.filter(pattern in string) 

Ma che non ha funzionato. Come posso implementarlo?

risposta

108

Usa contains o icontains:

result = table.objects.filter(string__contains='pattern') 
+1

Ya ha funzionato. Grazie –

+13

E per la ricerca senza distinzione tra maiuscole e minuscole usa ** __ icontain ** -> 'result = table.objects.filter (string__icontains = 'pattern')' –

+7

Questa risposta copre solo un sottoinsieme dei possibili pattern. Non gestirà un pattern come '% a% b%'. – kasperd

12

contiene e icontains menzionati da falsetrue eseguire query come SELECT ... WHERE headline LIKE '%pattern%

Insieme a loro, potrebbe essere necessario questi quelli con un comportamento simile: startswith, istartswith, endswith, iendswith

produzione

SELECT ... WHERE headline LIKE 'pattern%

o

SELECT ... WHERE headline LIKE '%pattern

6
result = table.objects.filter(string__icontains='pattern') 

Caso ricerca maiuscole per la stringa in un campo.