我在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抱怨我的变量以下划线开头......
答案 0 :(得分:0)