Table.objects.filter(name__in=keyword.split(' '))
ОК, это было неправильно. Я не знаю, если это может быть выполнено в один лайнер или один SQL-запрос. Более очевидный способ такой, но я не знаю, является ли это оптимальным:
result = []
for keyword in keywords.split(' '):
result += list(Table.objects.filter(name__icontains=keyword))
Хорошо, это можно сделать одним запросом, но я не совсем уверен, как. Вы можете попробовать это:
final_pred = Q()
for pred in [Q(name__icontains=keyword) for keyword in keywords.split(' ')]:
final_pred = final_pred | pred;
Table.objects.filter(final_pre)