Подтвердить что ты не робот

Django: использование запроса содержит каждое значение в списке

Мне нужно выполнить запрос django, который проверяет, содержит ли поле все значения в списке. Список будет иметь разную длину

Пример

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

Ответ 1

User.objects.filter(reduce(operator.and_, (Q(first_name__contains=x) for x in ['x', 'y', 'z']))

Ответ 2

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)

Ответ 3

Еще один подход.

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

Я не уверен, что это лучше, но это более читаемо.