views:

126

answers:

1

I feel like there has to be a cleaner way to do somthing like this. I have 15 or so objects that list out with three on a row. Anyone know a better solutions.

<ul>
    {% for object in object_list %}

        <li
            {% ifequal forloop.counter 1  %}class="first"{% endifequal %}
            {% ifequal forloop.counter 4  %}class="first"{% endifequal %}
            {% ifequal forloop.counter 7  %}class="first"{% endifequal %}
            {% ifequal forloop.counter 10  %}class="first"{% endifequal %}
            {% ifequal forloop.counter 13  %}class="first"{% endifequal %}   
        >
            {{ object.title }}
        </li>

        {% ifequal forloop.counter 3 %}<div class="clear"></div>{% endifequal %}
        {% ifequal forloop.counter 6 %}<div class="clear"></div>{% endifequal %}
        {% ifequal forloop.counter 9 %}<div class="clear"></div>{% endifequal %}
        {% ifequal forloop.counter 12 %}<div class="clear"></div>{% endifequal %}
        {% ifequal forloop.counter 15 %}<div class="clear"></div>{% endifequal %}
    {% endfor %}
</ul>

For the second loop you can do

{% if forloop.counter|divisibleby:"3" %}<div class="clear"></div>{% endif %}

But 1,4,7,10,13 dont have a common denominator.

Any help is appreciated.

A: 

You could use slicing to split them into your groups of 3 rows, and then do the appropriate operation on each 3 unit slice.

http://docs.djangoproject.com/en/dev/ref/templates/builtins/#slice

Paul McMillan