Разбиение данных на несколько отображаемых столбцов с помощью Django - PullRequest
4 голосов
/ 04 октября 2010

Перекрытие в терминологии затрудняет поиск ответов на этот вопрос.

Я ищу совет о том, как лучше всего реализовать отображение QuerySet в несколько столбцов, которое заполняет каждый столбец сверху вниз по X столбцам. Это означает, что количество элементов в каждом столбце равно количеству QuerySet, разделенному на X (количество столбцов).

Использование смещения не работает для этого, потому что я хотел бы, чтобы мои данные выросли в 4 столбца без обновления смещения вручную. CSS-поплавки работают визуально, но оставляют данные не в порядке.

Ответы [ 4 ]

5 голосов
/ 04 октября 2010

Что-то подобное должно работать для вас, передайте число столбцов как columns в шаблон:

{% for item in items %}
    {% if forloop.first %}<div style="float:left;">{% endif %}
    {{ item }}
    {% if forloop.counter|divisibleby:columns %}
        </div><div style="float:left">
    {% endif %}
    {% if forloop.last %}</div>{% endif %}    
{% endfor %}
<div style="clear:both;"></div>
1 голос
/ 04 октября 2010

Кажется, что ответ lazerscience находится на правильном пути - но я думаю, что ОП хочет, чтобы данные сортировали данные по столбцам в алфавитном порядке, а затем начинали с вершины следующего столбца.Использование divisibleby: работает, чтобы разбить строку после элементов 'X', но я думаю, что потребуется более сложный шаблон, чтобы сделать то, что хочет OP.

Не уверен, если это возможно, но в представлении вы могли бы: Получить количество элементов, разделить на «столбцы» и использовать этот # в Divisibleby для разбиения на следующий столбец DIV (визуальный поток будет CSS)это в столбцы, оставляя порядок сортировки поперек и затем вниз.

Извините, если я что-то пропустил.

-K

0 голосов
/ 18 декабря 2011

Вот некоторые фильтры шаблонов django, которые разбивают список на несколько подсписков:

фильтры шаблонов разделов списка на djangosnippets.org

Вы можете использовать их вшаблон django для разделения длинного списка на несколько столбцов следующим образом:

{% load list_tags %}
<h2>Some List</h2>

{% for sub_list in full_list|rows:"3" %}
<ul>
  {% for item in sub_list %}
    <li>
        {{item.name}}
    </li>
  {% endfor %}
</ul>
{% endfor %}

Я включил фильтры шаблонов в свой проект в файл с именем list_tags.py.При необходимости измените тег {% load %}.

0 голосов
/ 02 февраля 2011

Вам лучше пойти и использовать плагин jQuery, чтобы создать несколько столбцов из списка.
Колонизатор очень хорошо работает для меня

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