set_null - django tutorial




Django: Abfrage verwendet enthält jeden Wert in einer Liste (2)

Ich muss eine Django-Abfrage durchführen, die überprüft, ob ein Feld alle Werte in einer Liste enthält. Die Liste wird unterschiedlich lang sein

Beispiel

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

Nur ein anderer Ansatz.

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

Ich bin mir nicht sicher, ob es besser ist, aber es ist lesbarer.


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)






django-models