Шаблон django forloop повторно настраивается? - PullRequest
0 голосов
/ 02 марта 2011

Возможно ли сбросить объект forloop.counter обратно на ноль?

Я использую его, чтобы выплевывать объекты, но когда тип объекта изменяется, я хочу обнулить его, чтобы я мог сосчитать до 5 объектов и вывести объект конца строки (без правого отступа) в качестве пятого и только пятый объект в этом типе.

И если у меня есть 5 объектов, первые два типа a, а следующие 3 типа b, пятый всегда получит меньший отступ, не говоря уже о том, что это только третий в строке.

Вот мой код шаблона:

{% for project in projects %}
    {% ifchanged project.proj_type %}
        {% forloop.counter=="1" %}
        </div>
        <div class="span-4 prepend-top">
            <h5 class="right" >{{ project.proj_type }}</h5>
        </div>

        <div class="span-19 append-1 last" id="row-of-projects">
    {% endifchanged %}

    {% if forloop.counter|divisibleby:"4" %}                    
        <div class="span-4 append-1 prepend-top last" id="project">
    {% else %}
        <div class="span-4 append-1 prepend-top" id="project">
    {% endif %}
        <p class="project-name">{{ project.name }}</p>                    
        <a href="/gallery/{{ project.slug }}/" ><img src="/media/pa/photographs/{{ project.get_photograph }}-t.jpg" alt="{{ project.name }}" /></a>
        </div id="project">
{% endfor %} 

Ответы [ 2 ]

2 голосов
/ 02 марта 2011

Похоже, вы должны перегруппировать объекты на основе типа и выполнить заполнение во внутреннем цикле.

1 голос
/ 02 марта 2011

Я не совсем уверен, что понимаю, что вам нужно.

Вы можете использовать тег regroup для отображения объектов в соответствии с типом.

И вы можете использовать class="{% cycle 'normal' 'normal' 'normal' 'normal' 'special' %}", чтобы по-разному стилизовать каждый пятый элемент.

...