Django查询包含关键词
我有一些关键词,它们用空格分开,放在一个字符串里。还有一个表格,里面有一列叫做“名称”。我想知道怎么才能找到所有名称中包含这些关键词之一的记录。
举个例子:
关键词是 'test split el'
如果我的记录中有 'test2'、'element' 和 'show',那么查询的结果应该返回 'test2' 和 'element'。
1 个回答
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)