2013-08-09 39 views
53

Tương đương với câu lệnh SQL này trong django là gì?sql "LIKE" tương đương trong truy vấn django

SELECT * FROM table_name WHERE string LIKE pattern; 

Làm cách nào để triển khai tính năng này trong django? Tôi đã thử

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

Nhưng điều đó không hiệu quả. Làm thế nào để tôi thực hiện điều này?

Trả lời

108

Sử dụng contains hoặc icontains:

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

Ya nó hoạt động. Cảm ơn bạn –

+13

Và đối với trường hợp sử dụng tìm kiếm phân biệt chữ hoa chữ thường ** __ icontains ** -> 'result = table.objects.filter (string__icontains = 'pattern')' –

+7

Câu trả lời này chỉ bao gồm một tập con của các mẫu có thể. Nó sẽ không xử lý một mẫu như '% a% b%'. – kasperd

12

chứa và icontains đề cập bởi falsetrue làm cho các truy vấn như SELECT ... WHERE headline LIKE '%pattern%

Cùng với họ, bạn có thể cần những người thân với hành vi tương tự: startswith, istartswith, endswith, iendswith

làm

SELECT ... WHERE headline LIKE 'pattern%

hoặc

SELECT ... WHERE headline LIKE '%pattern

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

Trường hợp tìm kiếm không nhạy cảm đối với chuỗi trong một lĩnh vực.