Mam model django i pole reprezentujące pełną nazwę użytkownika. Mój klient chce, bym skonfigurował filtr do wyszukiwania użytkownika na podstawie tablicy napisów, w której wszystkie muszą być niewrażliwe na wielkość liter, zawarte w pełnej nazwie.Filtruj bazę danych Django dla pola zawierającego dowolną wartość w tablicy
Na przykład
Jeżeli użytkownicy full_name = "Keith, Thomson S."
i mam listę ['keith','s','thomson']
Chcę wykonać odpowiednik filtru
Profile.objects.filter(full_name__icontains='keith',full_name__icontains='s',full_name__icontains='thomson')
Problemem jest to lista ta może być o dynamicznym rozmiarze - więc nie wiem jak to zrobić.
Ktoś ma jakieś pomysły?
Zastanawiam się, jak będzie wyglądać ostateczne wyrażenie sql po połączeniu wszystkich tych filtrów. – akonsu
@akonsu Po prostu wypróbowałem to (no, coś podobnego) - zostaje ono przetłumaczone na ciąg 'AND's w klauzuli' where', tj. 'Full_name LIKE% keith% AND full_name LIKE% s% AND ... ' –
@isbadawi, +1 - zauważ, że domyślnym operatorem dla wielu obiektów Q jest AND, więc możesz po prostu' * [Q1, Q2, Q3] 'bez użycia redukcji/operator.and_. –