我正在构建对象列表的时间轴。该模型的布局如下:
class Note(models.Model):
added_by = models.ForeignKey(User)
context = models.TextField()
timestamp_added = models.DateTimeField(auto_now_add=True)
我打算用它来创建一个时间轴,通过以下内容:
notes = Note.objects.all()
但是,为了让事情变得更清洁,我想为每个日期添加一个标题,然后显示该日期的所有事件。
我认为如下:
<ul class="timeline">
<!-- timeline time label -->
{% for note in notes %}
{% if note.timestamp_added is first %}
<li class="time-label">
<span class="bg-red">
{{note.timestamp_added|date:"D m, Y" }}
</span>
</li>
{% endif %}
<li>
<i class="fa fa-envelope bg-blue"></i>
<div class="timeline-item">
<span class="time"><i class="fa fa-clock-o"></i> {{note.timestamp_added}}</span>
<h3 class="timeline-header"><a href="#">{{note.added_by}}</a> added note</h3>
<div class="timeline-body">
{{note.context}}
</div>
</div>
</li>
{% endfor %}
</ul>
但是,有没有一种合适的方法可以根据日期的第一个实例在这里写一个if语句?
答案 0 :(得分:1)
您正在寻找ifchanged
模板标记。
{% ifchanged %}
<li class="time-label">
<span class="bg-red">
{{note.timestamp_added|date:"D m, Y" }}
</span>
</li>
{% endif %}
您可能希望按日期对您的查询集进行排序,以确保它们的顺序正确无误:
notes = Note.objects.order_by('timestamp_added')