2017-10-26 2 views
0

私は、オブジェクトのリストのタイムラインを構築中です。Djangoの日付に基づいてオブジェクトを異なる方法で処理する

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文を書くための適切な方法は何ですか?

答えて

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') 
関連する問題