Jaki jest odpowiednik tej instrukcji SQL w django?
SELECT * FROM table_name WHERE string LIKE pattern;
Jak zaimplementować to w django? próbowałem
result = table.objects.filter( pattern in string )
Ale to nie zadziałało. Jak to zaimplementować?
python
sql
django
django-models
django-queryset
Aswin Murugesh
źródło
źródło
result = table.objects.filter(string__icontains='pattern')
%a%b%
.result = table.objects.filter(string__contains='a').filter(string__contains='b')
ba
któreLIKE %a%b%
nie.zawiera i icontains wymienione przez falsetru tworzą zapytania takie jak
SELECT ... WHERE headline LIKE '%pattern%
Wraz z nimi możesz potrzebować tych o podobnym zachowaniu: zaczyna się z , jest z , kończy z , z przyjaciółmi
zrobienie
SELECT ... WHERE headline LIKE 'pattern%
lub
SELECT ... WHERE headline LIKE '%pattern
źródło
Wyszukiwanie ciągów znaków w polu bez rozróżniania wielkości liter.
źródło
Aby zachować kolejność słów jak w instrukcji sql LIKE '% pattern%' używam iregex, na przykład:
metody łańcuchowe są niezmienne, więc zmienna wzorca nie zmieni się, a za pomocą. * będziesz szukał 0 lub więcej wystąpień dowolnego znaku oprócz linii przerwania.
Używając poniższego do iteracji po słowach wzorca:
kolejność słów w twoim wzorcu nie zostanie zachowana, dla niektórych osób może to zadziałać, ale w przypadku próby naśladowania instrukcji sql like użyję pierwszej opcji.
źródło
Można to zrobić za pomocą niestandardowych wyszukiwań Django . Dokonałem wyszukiwania w aplikacji podobnej do Django . Po zainstalowaniu,
__like
wyszukiwanie z symbolami wieloznacznymi%
i_
będzie włączone.Cały niezbędny kod w aplikacji to:
źródło