我在一个用""拆分的字符串中有一些关键字.我还有表名列表.如何获取名称中包含一个关键字的所有记录?
例:
keywords ='test split el'
如果我在记录'test2''元素'和'show'中,查询应返回'test2'和'element'.
Table.objects.filter(name__in=keyword.split(' '))
Run Code Online (Sandbox Code Playgroud)
好的,那是错的.我不知道,如果这可以在一个单行或单个SQL查询中完成.更明显的方式就是这样,但我不知道,如果这是最佳的:
result = []
for keyword in keywords.split(' '):
result += list(Table.objects.filter(name__icontains=keyword))
Run Code Online (Sandbox Code Playgroud)
好的,这可以在一个查询中完成,但我不确定如何.你可以试试这个:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
944 次 |
| 最近记录: |