2013-08-09 16 views
53

Jaki jest odpowiednik tego wyrażenia SQL w django?sql Odpowiednik "LIKE" w zapytaniu django

SELECT * FROM table_name WHERE string LIKE pattern; 

Jak mogę to zaimplementować w django? Próbowałem wykonać:

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

Ale to nie zadziałało. Jak mogę to wdrożyć?

Odpowiedz

108

Zastosowanie contains lub icontains:

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

To zadziałało. Dziękujemy –

+13

W przypadku wyszukiwania niewrażliwego na wielkość liter użyj ** __ icontains ** -> 'result = table.objects.filter (string__icontains = 'pattern')' –

+7

Ta odpowiedź obejmuje tylko podzbiór możliwych wzorów. Nie poradziłby sobie ze wzorcem takim jak '% a% b%'. – kasperd

12

zawiera i icontains wymienione przez falsetrue dokonać zapytań jak SELECT ... WHERE headline LIKE '%pattern%

Wraz z nimi, może być konieczne tych co z podobnym zachowaniem: startswith, istartswith, endswith, iendswith

Dokonywanie

SELECT ... WHERE headline LIKE 'pattern%

lub

SELECT ... WHERE headline LIKE '%pattern

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

Case niewrażliwy wyszukaj ciąg w polu.