1. ホーム
  2. django

[解決済み] リストオブジェクトをビュー側ではなく、テンプレート側で制限する方法

2023-06-12 16:23:07

質問

オブジェクトを制限する方法の1つに、次のような関数に制限を加える方法があります。

def ten_objects():
    obj = Model.objects.all()[0:10]  # limit to 10
    return {'objects': obj}

しかし、ビューの中ではなく、テンプレートの中でこれを実現するにはどうしたらよいでしょうか?

テンプレート内でオブジェクトをフィルタリングし、文字を制限できることは知っていますが、ループ内で表示されるオブジェクトの量を実際に制限するにはどうすればよいのでしょうか。たとえば、次のコードはすべてのオブジェクトをループします。

    <ul>
     {% for new in news %}
      <li>
       <p>{{ news.title }}</p>
       <p>{{ news.body }}</p>
      </li>
     {% endfor %}
    </ul>

どのように私は最初の3つのオブジェクト/アイテムの後に、ループを破ることができます。そして、どのように私はテンプレート内でそれを行うことができます。事前にありがとうございます。

どのように解決するには?

あるところに slice というフィルターがあり、テンプレートで使用することができます。これはビュー内でスライスするのと全く同じように動作します。

{% for new in news|slice:":10" %}