Estou apresentando alguns valores com um loop for e quero ter certeza de que ele exibe apenas X caracteres. Eu sou relativamente novo no Django.
Por exemplo:
<div class="bookauthor">
by
{% for author in book.volumeInfo.authors %}
{% if not forloop.first %}&{% endif %}
{{author}}
{% endfor %}
</div>
Produziria uma lista de autores de livros, por exemplo:
por Lennart Berggren e Jonathan M. Borwein e Peter B. Borwein
e gostava de apenas 30 caracteres, já que às vezes a lista de autores pode ser longa.
Eu entendo que posso usar truncatechars (novo no Django 1.4) para fazer isso em um único valor, como {{author|truncatechars:9}}
, mas estou me perguntando se há uma maneira elegante de aplicar ao loop for ou ao texto resultante do loop for. Informe-me se isso não está claro.
EDITAR
truncatechars não parece funcionar corretamente quandousado em um {% filter%}. Tudo o que produz é "...". Vou testar mais alguns, pode ser um bug. Truncatewords funciona bem e, de qualquer forma, posso ser mais adequado para essa situação.
<div class="bookauthor">
by
{% filter truncatechars:30 %}
{% for author in book.volumeInfo.authors %}
{% if not forloop.first %}&{% endif %}
{{author}}
{% endfor %}
{% endfilter %}
</div>