Django - Сортировать список по 3 колонкам на шаблонах - PullRequest
3 голосов
/ 14 мая 2011

Мои модели:

Item:
    name
    desc
    order
    created_at

И я получил список элементов из Элемент примерно так:

items = Item.objects.all().order_by('order', '-created_at')

Теперь я отправляю этот список в шаблоны.Но я должен сортировать это по шаблону.Например:

<ul>
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
</ul>
<ul>
    <li>item 4</li>
    <li>item 5</li>
    <li>item 6</li>
</ul>
<ul>
    <li>item 7</li>
</ul>

И с меньшим количеством элементов:

<ul>
    <li>item 1</li>
    <li>item 2</li>
</ul>
<ul>
    <li>item 3</li>
    <li>item 4</li>
</ul>
<ul>
    <li>item 5</li>
</ul>

или сокращение:

<ul>
    <li>item 1</li>
</ul>
<ul>
    <li>item 2</li>
</ul>
<ul>
    <li>item 3</li>
</ul>

Есть идеи?Спасибо за помощь!

ОБНОВЛЕНИЕ: добавить отражения

<ul>
    <li>item 1</li>
    <li>item 2</li>
</ul>
<ul>
    <li>item 3</li>
</ul>
<ul>
    <li></li>
</ul>

или

<ul>
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
</ul>
<ul>
    <li>item 4</li>
</ul>
<ul>
    <li>item 5</li>
</ul>

или

<ul>
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
    <li>item 4</li>
</ul>
<ul>
    <li>item 5</li>
    <li>item 6</li>
</ul>
<ul>
    <li>item 7</li>
</ul>

Ответы [ 3 ]

2 голосов
/ 15 мая 2011
2 голосов
/ 18 мая 2011

Я сделал это вчера.

{% for link in footer_links %}
    {% if forloop.first or forloop.counter0|divisibleby:"6" %}
    <ul>
    {% endif %}
        <li><a href='{{ link.href }}'>{{ link.title }}</a></li>
    {% if forloop.last or forloop.counter|divisibleby:"6" %}
    </ul>
    {% endif %}
{% endfor %}

это не совсем три столбца, но он разбивает ссылки на списки определенной длины (6)

0 голосов
/ 14 мая 2011

Я не совсем понимаю критерии, которые определяют вашу группировку - это буквально циклически до 3?Если это так, я думаю, что тег шаблона цикла - это то, что вы ищете:

http://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#cycle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...