Django查询包含和关键字

时间:2011-01-04 11:51:56

标签: python django

我在一个用“”拆分的字符串中有一些关键字。我还有表名列表。如何获取名称中包含一个关键字的所有记录?

示例:

keywords ='test split el'
如果我在记录'test2''元素'和'show'中,查询应该返回'test2'和'element'。

1 个答案:

答案 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)