我有一个搜索栏,它在 2 个模型列标题、正文、short_description 中进行搜索。我正在使用 MySQL 数据库。现在,我正在使用 Q 查找,但我想“改进”一些搜索限制。
其中之一是 Q 查找仅根据与字段完全相同的短语结果查找结果,例如,我有标题,why python is so amazing?
我必须写why
or才能获得结果。我想要得到的是扩展搜索栏以按以下方式工作:python
python is
用户在搜索栏中插入一个问题:python language
搜索查找正在拆分每个单词并返回所有包含python
or的对象language
。最后,结果将返回带有 的对象why python is so amazing?
,无论它是用户放置的python language
还是amazing python
.
我在下面发布我当前的代码:
视图.py
def search_items(request):
query = request.GET.get('q')
article_list= Article.objects.filter(title__icontains=query)
qa_list = QA.objects.filter(title__icontains=query)
if query is not None:
lookups = Q(title__icontains=query) | Q(short_description__icontains=query) | Q(body__icontains=query)
article_list= Article.objects.filter(lookups, status=1).distinct()
qa_list = QA.objects.filter(lookups, status=1).distinct()
context = {
'query_name': query,
'article_list': article_list,
'qa_list': qa_list,
}
return render(request, 'search/search_items.html', context)
我已经检查了这个解决方案和这个解决方案,但结果并不令人满意,因为当我python language
找到一个带有标题的对象时,why python is so amazing
我没有得到任何结果。
问题
我将不胜感激有关如何获得基于用户输入输入字段的单词的所有对象列表的结果的任何建议。