如何解决Django - 按模板中的特定字段对查询集进行分组
您正在寻找的 标签,正是您想要的。它需要一个项目序列( 必须事先订购,您必须是它的顺序)和一个查询,并通过 该查询将序列分组。{% regroup %}
view:
events = Event.objects.select_related.all()
template:
{% regroup events by date as events_by_date %}
{% for date in events_by_date %}
<div class="content">
<h1>{{ date.grouper|date:"d F Y" }}</h1>
{% for event in date.list %}
{% include "partials/event.html" %}
{% endfor %}
</div>
{% endfor %}
请注意,该日期格式字符串是不同的;相当于%B在strftime是F针对date过滤器)。
解决方法
我有一张桌子Events
,是按田野排序的date。
我想打印出模板中的事件,但为每个日期使用一个单独的div ,例如:
<div class="content">
<h1>December 30th</h1>
<!-- div for Event 1 from December 30th -->
<!-- div for Event 2 from December 30th -->
</div>
<div class="content">
<h1>December 31st</h1>
<!-- div for Event 1 from December 31st -->
<!-- div for Event 2 from December 31st -->
<!-- div for Event 3 from December 31st -->
</div>
我该怎么做呢?
我当前的解决方案是将Event对象放入以日期
为键的字典中。这具有排序问题,并且效率低下。
视图:
events = Event.objects.select_related().all()
events_dict={}
for event in events:
date=event.date.strftime('%d %B %Y')
if date in events_dict:
events_dict[date].append(event)
else:
events_dict[date] = [event]
Template:
{% for date,events in events_dict.items %}
<div class="content">
<h1>{{date}}</h1>
{% for event in events %}
{% include "partials/event.html" %}
{% endfor %}
</div>
{% endfor %}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。