连续调用
filter,例如:
queryset = Profile.objects.all()strings = ['keith', 's', 'thompson']for string in strings: queryset = queryset.filter(full_name__icontains=string)
或者,您可以
&将一堆
Q对象组合在一起:
condition = Q(full_name__icontains=s[0])for string in strings[1:]: condition &= Q(full_name__icontains=string)queryset = Profile.objects.filter(condition)
一种更神秘的写法,避免显式循环:
import operator# ...condition = reduce(operator.and_, [Q(full_name__icontains=s) for s in strings])queryset = Profile.objects.filter(condition)



