テンプレートのインデックス、あとforループで爆死した話
おれがアホやった
こんな感じのよくあるテンプレートかいた
<ul> {% for book in books %} <li/>{{ book.title}} <li/>{{ book.author }} {% endfor %} </ul>
で、こんなエラーがでた
Caught TypeError while rendering: 'Book' object is not iterable
え、なんでって思ってたらおれはこう書いていた
<ul> {% for book in books %} <li/>{{ book.title}} <li/>{{ book.author }} {% for hoge in book %} {{ hoge }} {% endfor %} {% endfor %} </ul>
つまり iterable な books は QuerySet でわたしたからいいけれど、それの擬似コード内でさらにループさせようとしてたからこういうエラーがでた。擬似コードかいてて実際はもうちょい複雑だったから気づけなかった。
テンプレートのインデキシングが便利
上記の例だと
<ul> {{ books.2.title }} {{ books.2.author }} </ul>
みたいにして books という iterable なオブジェクトに対してインデキシングでアクセスできる。諸事情によりテンプレート内で必要だったので助かった
追記
実はこの件いらなくなったんや……