Tengo un modelo django y un campo que representa el nombre completo de un usuario. Mi cliente quiere que configure un filtro para buscar un usuario basado en una matriz de cadenas donde todas ellas deben ser insensibles a las mayúsculas y a las minúsculas contenidas dentro del nombre completo.Filtrar la base de datos Django para el campo que contiene cualquier valor en una matriz
Por ejemplo
Si un usuario full_name = "Keith, Thomson S."
y tengo una lista ['keith','s','thomson']
que quieren llevar a cabo el filtro equivalente de
Profile.objects.filter(full_name__icontains='keith',full_name__icontains='s',full_name__icontains='thomson')
El problema es que esta lista puede ser de tamaño dinámico, así que no sé cómo hacer esto.
¿Alguien tiene alguna idea?
Me pregunto cómo será la expresión sql final después de encadenar todos estos filtros. – akonsu
@akonsu Acabo de probarlo (bueno, algo similar) - se traduce a una serie de 'AND's en la cláusula' where', es decir 'full_name LIKE% keith% AND full_name LIKE% s% AND ... ' –
@isbadawi, +1 - tenga en cuenta que el operador predeterminado para múltiples objetos Q es AND, por lo que puede simplemente' * [Q1, Q2, Q3] 'sin usar reduce/operator.and_. –