我在一个用“”拆分的字符串中有一些关键字。我还有表名列表。如何获取名称中包含一个关键字的所有记录?
示例:
keywords ='test split el'
如果我在记录'test2''元素'和'show'中,查询应该返回'test2'和'element'。
答案 0 :(得分:7)
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)