在django模板中对搜索结果进行分组

时间:2014-03-27 18:59:09

标签: python django

我在django有一个搜索结果页面。结果列出了视频标题,视频描述和一些元数据。它还包括视频所在的主题。

我想尝试按主题对结果进行分组,而不是返回完整的视频列表。然后,在每个组中,仅显示前1-3,带有“查看y主题中所有x个视频”的链接。是否在组中显示1,2或3的决定因素将是基于总数。因此,如果小于10,则仅在该分组中显示1个视频。如果组中有10-30个,则显示2个视频。如果该分组中有30个或更多,则显示3.(确定1-3可能没有必要,我可以做到前3个)

我的代码目前很简单,只返回结果。但我无法弄清楚如何在django的模板语言中设置分组。我想我可以在我的视图中做到这一点,但希望有一些简单的过滤器,我不知道在模板中帮助和做到这一点。感谢您的任何建议..这是我目前的代码:

<h4>Search Results</h4>
        <p>{{ res.hits.total }} matches found for <span id="qresult">{% if q %}'{{ q }}'{% else %}all{% endif %}</span></p>
    </div>
    <ul class="search-list" id="search-results">
    {% if res.hits.total > 0 %}
        {% for h in reshh %}
            {% with h|get_underscore_value:"_source" as source %}
                <li><a href='/video/{{ source.slug }}'>{{ source.title }}</a>
                <p>{{ source.description }}</p>
                <span class="sr-meta" style="">metadata</span>
                <p>(topic: {{ source.topic_name }})</p></li>
            {% endwith %}
        {% endfor %}
    {% endif %}
    </ul>

顺便说一句,它来自elasticsearch。 res.hits.hits._source是我的结果包含的地方。 “get_underscore_value”只是一个自定义过滤器来绕过django抱怨我的变量以下划线开头......

1 个答案:

答案 0 :(得分:0)