如何按字母顺序对搜索结果进行排名(Django 2.1)

时间:2019-02-28 01:52:38

标签: django

我有一个搜索引擎代码和一个按字母顺序排列的按钮,但我无法让它们一起工作。 搜索引擎代码:

def query_search(request):
    articles = cross_currents.objects.all()
    search_term = ''
    if 'keyword' in request.GET:
        search_term = request.GET['keyword']
        articles = articles.annotate(similarity=Greatest(TrigramSimilarity('Title', search_term), TrigramSimilarity('Content', search_term))).filter(similarity__gte=0.03).order_by('-similarity')
        if 'a-z' in request.GET:
            articles = articles.order_by('Title')

按字母顺序对帖子进行排名的按钮代码:

<a href="?a-z=True" type="button" class="btn btn-outline-{% if 'a-z' in request.GET %}success{% else %}secondary{% endif %}">A-Z</a>

该按钮按字母顺序对所有帖子进行排名,而不是仅对搜索结果中的帖子进行排名。可能是因为我没有将按钮生成的request.GET的值与输入到搜索引擎中的关键字生成的值组合在一起。如何修改代码,使按钮仅对搜索结果中的帖子进行排名?

1 个答案:

答案 0 :(得分:0)

类似这样的东西:

    if request.GET.get('a-z') == 'True':
        articles = articles.order_by('Title')

您还需要对keyword执行相同的操作。 request.GET是字典。您只能将in与列表一起使用。