如何在前端将搜索结果分数显示为百分比?

时间:2019-05-05 18:41:07

标签: python django elasticsearch django-haystack

我最近使用Elasticsearch在Django项目上设置了Django-haystack,并且希望在模板(html)中以百分比显示搜索结果的分数。

所以我想知道是否有办法实现这一目标?

一个简短的最终结果示例是:

<div>
{% if  page_obj.object_list %}
       <ol class="row top20">

        {% for result in page_obj.object_list %}

        <div class="showcase col-sm-6 col-md-4">


<!-- Matching score to be displayed in the h5 below -->

          <h5>{{result.object.matching_score}}</h5>

        <a href="{{ result.object.get_absolute_url }}">
          <h3>{{result.object.title}}</h3>
          <img src="{{ result.object.image }}" class="img-responsive">
        </a>

        </div>

         {% endfor %}
       </ol>
{% endif %}
</div>

我对此还是很陌生,但是可能是一个If - Else语句,Elasticsearch的默认_score值,甚至某些Javascript都可以完成这项工作。我不确定,所以您认为我应该怎么做?

1 个答案:

答案 0 :(得分:0)

如果matching_scroe是要显示的百分比,则可以使用{{result.object.matching_score|floatformat:2}}%

如果您有2个需要除的值,则需要编写一个模板标记

在目录templatetags中,mytags.py

from django import template
register = template.Library()


@register.filter
def div(numerator, denominator):
    return float(numerator/denominator)

在您的html文件中

{% load mytags %}

{{ object.numerator|div:object.denominator }}%