我目前正在搜索我的Django网站,想要查询,然后查看它在帖子名称和描述中显示的时间,并返回结果,其中查询最多显示在帖子上(即如果我搜索" car"一个提到5次的汽车的帖子应该出现在提到的帖子之前" car"一次)。
这是我的views.py:
def stack_list(request, query):
context_dict = {}
stacks_list = Stack.objects.filter(
Q(name__icontains=query) |
Q(description__icontains=query)
).annotate(total_occurance=Count('name')+Count('description')
).order_by('total_occurance').distinct()
context_dict['stacks_list'] = stacks_list
return render(request, 'stack/index_search_results.html', context_dict)
和我的HTML:
{% for stack in stacks_list %}
<p>{{ stack.name }}
{{ stack.description }}</p>
{% endfor %}
但是,当我尝试查询时,它并没有按降序排列。关于我哪里出错的任何想法?
答案 0 :(得分:0)
为什么不使用临时工具进行搜索?例如,Django Postgres full text search或Django Haystack用于更复杂的搜索和分面(在我看来,这个工具有一些缺点 - 因此,当我使用elasticsearch时,我使用Elasticsearch DSL python库) 。希望它有所帮助,对不起,如果您出于某些教育原因尝试以这种方式解决案例。