Tôi có mô hình django và một trường đại diện cho một tên đầy đủ của người dùng. Khách hàng của tôi muốn tôi thiết lập bộ lọc để tìm kiếm người dùng dựa trên một chuỗi các chuỗi nơi tất cả chúng phải phân biệt chữ hoa chữ thường trong tên đầy đủ.Lọc cơ sở dữ liệu Django cho trường có chứa bất kỳ giá trị nào trong một mảng
Ví dụ
Nếu một người dùng full_name = "Keith, Thomson S."
Và tôi có một danh sách ['keith','s','thomson']
Tôi muốn thực hiện bộ lọc tương đương với
Profile.objects.filter(full_name__icontains='keith',full_name__icontains='s',full_name__icontains='thomson')
Vấn đề là trong danh sách này có thể kích thước động - vì vậy tôi không biết cách thực hiện điều này.
Bất kỳ ai có ý tưởng nào?
Tôi tự hỏi biểu thức sql cuối cùng sẽ trông như thế nào sau khi chuỗi tất cả các bộ lọc này. – akonsu
@akonsu Tôi vừa thử nó (tốt, một cái gì đó tương tự) - nó được dịch sang một chuỗi 'AND' trong mệnh đề 'where', tức là' full_name LIKE% keith% AND full_name LIKE% s% AND ... ' –
@isbadawi, +1 - lưu ý rằng toán tử mặc định cho nhiều đối tượng Q là AND vì vậy bạn chỉ có thể' * [Q1, Q2, Q3] 'mà không cần sử dụng reduce/operator.and_. –