1

モデル:

class Subject (models.Model):
    name = models.CharField(max_length=50)
    day = models.CharField(max_length=50)

私のSQLテーブルには50人以上のユーザーがいて、全員が週に1日を割り当てています(つまり、user1 -> MON、user2 -> MON、user3 -> WED ...)

以下のテンプレートでは、曜日とサブジェクト名を含むテーブルを表示したいのですが、ユーザー グループのヘッドとして1 回だけ曜日名を表示したいと考えています。

<table>
<tr class="head"><th>SUBJECTS</th></tr>

{% for field in subjects_all %}
    {% if forloop.first %}
    <tr class="head"><td colspan=5 align="center">MONDAY</td></tr>
    {% endif %}

    {% if field.day == "MON"  %}
    <tr><td>{{ field.name }}</td></tr>
    {% endif %}

    {% if ... } # <- ???
    <tr class="head"><td colspan=5 align="center">TUESDAY</td></tr>
    {% endif %}

    {% if field.day == "TUE"  %}

    <tr><td>{{ field.name }}</td></tr>

    {% endif %}

    (...)

{% endfor %}

</table>

以下の例では、forloop.first を使用して月曜日を 1 回だけ表示できることはわかっていますが、ユーザー グループの一番上に残りの日を1 回だけ表示するにはどうすればよいでしょうか。通常の 'if' を実行すると、データベースで見つかったすべてのユーザーの上に TUESDAY が表示されますが、それは私が望むものではありません。

編集: そして、一週間の毎日のために for ループ全体を7回コピーすることを避けたい

4

1 に答える 1

3

おそらくifchangedテンプレートタグが必要です。

regroupまたは、 を使用してアイテムを日ごとにグループ化することもできます。

于 2013-01-03T16:24:48.960 に答える