Django: la query che usa contiene ogni valore in una lista

Devo eseguire una query di django che controlli se un campo contiene tutti i valori all’interno di una lista. L’elenco sarà di lunghezza variabile

Esempio

User.objects.filter(first_name__contains=['x','y','z']) 

 reduce(operator.and_, (Q(first_name__contains=x) for x in ['x', 'y', 'z'])) 
 import operator from django.db.models import Q q = ['x', 'y', 'z'] query = reduce(operator.and_, (Q(first_name__contains = item) for item in ['x', 'y', 'z'])) result = User.objects.filter(query) 

Solo un altro approccio.

 qs = User.objects.all() for search_term in ['x', 'y', 'z']: qs = qs.filter(first_name__contains=search_term) 

Non sono sicuro che sia migliore, ma è più leggibile.