Aim to Achieve:
I want all objects where name attribute contains any word from the list.
I have:
list = [\'word1\',\'word2\',\'word3\']
ob_li
You could use Q objects to constuct a query like this:
from django.db.models import Q
ob_list = data.objects.filter(reduce(lambda x, y: x | y, [Q(name__contains=word) for word in list]))
Edit:
reduce(lambda x, y: x | y, [Q(name__contains=word) for word in list]))
is a fancy way to write
Q(name__contains=list[0]) | Q(name__contains=list[1]) | ... | Q(name__contains=list[-1])
You could also use an explicit for loop to construct the Q
object.