3

記事のリストがあり、各記事はセクションに属しています。

class Section(models.Model):
  name = models.CharField(max_length=200)

  def __unicode__(self):
    return self.name

class Article(models.Model):
  section = models.ForeignKey(Section)
  headline = models.CharField(max_length=200)
  # ...

セクションごとにグループ化された記事を表示したい。

スポンサーシップ、広告、マーケティング
1. ナイキが全18大学のユニフォームを着る。メンフィス アスレティック チームの
2. フィル・ジャクソン、ニューオーリンズ・アリーナのハラのサインに疑問
3. プーマがニューヨークを拠点とする広告代理店 Droga5 を採用し、グローバル アカウントの責任者に
4. ピザ・パトロンがピザ・ハットに代わり、AACの専属プロバイダーに
5. マーケットプレイスのまとめ

スポーツメディア
6.ニューイングランドの多くのペイトリオッツファンは今夜の試合を見ない
7. ESPNオンブズマンは、ネットはホルツの状況を明確にするべきだったと言います
8. EA Sports、2009年春にニンテンドーWii向けのフィットネスタイトルをデビュー
9. ブログ・ハウンド:ロケッツとサンズのスカッフル 本日の No.1 トピック
10. メディアノート

リーグと統治機関
11. DEIとチップ・ガナッシ・レーシングが4台のスプリント・カップ・チームに統合
12. NASCAR ラウンドテーブル パート II: 議論された新しい戦略、カットバック
13. NFLプレーオフゲームの平均チケット価格が10%下落

私は、Django のテンプレート システムを使ってそのほとんどを行う方法を見つけました。

{% regroup articles by section as articles_by_section %}

{% for article in articles_by_section %}    
    <h4>{{ article.grouper }}</h4>
    <ul>
    {% for item in article.list %}  
        <li>{{ forloop.counter }}. {{ item.headline }}</li>
    {% endfor %}
    </ul>
{% endfor %}

ただ数字の出し方がわかりません。上記のコードは、Sports Media の記事に 6 ~ 10 ではなく 1 ~ 5 の番号を付けます。助言がありますか?

4

4 に答える 4

4

コメントでのJebの提案に続いて、カスタムテンプレートタグを作成しました。

呼び出された回数を単純に出力するタグであるに置き換えまし{{ forloop.counter }}た。{% counter %}

これが私のカウンタータグのコードです。

class CounterNode(template.Node):

  def __init__(self):
    self.count = 0

  def render(self, context):
    self.count += 1
    return self.count

@register.tag
def counter(parser, token):
  return CounterNode()
于 2008-11-21T16:23:07.327 に答える
1

これは正確ではありませんが、誰かに適しているかもしれません:

{% for article in articles %}        
   {% ifchanged article.section %}
      {% if not forloop.first %}</ul>{% endif %}
      <h4>{{article.section}}</h4>
      <ul>
   {% endifchanged %}
          <li>{{forloop.counter}}. {{ article.headline }}</li>
   {% if forloop.last %}</ul>{% endif %}
{% endfor %}
于 2008-12-11T12:33:33.130 に答える
-1

順序なしの代わりに順序付きリストを使用できます。

{% regroup articles by section as articles_by_section %}

<ol>
{% for article in articles_by_section %}        
    <h4>{{ article.grouper }}</h4>
    {% for item in article.list %}  
        <li>{{ item.headline }}</li>
    {% endfor %}
{% endfor %}
</ol>
于 2008-11-14T18:50:39.213 に答える
-1

内側のループ内で forloop.parentloop.counter を使用して、目的の番号付けを実現できると思います。

于 2008-11-14T15:25:47.257 に答える