Фрагмент фильтра перегородки Django
Я использую один из фрагментов Django для разделения данных на 3 столбца, и пока все работает, я не знаю, как вызвать средний раздел.
Фрагмент:
@register.filter
def partition(thelist, n):
try:
n = int(n)
thelist = list(thelist)
except (ValueError, TypeError):
return [thelist]
p = len(thelist) / n
return [thelist[p*i:p*(i+1)] for i in range(n - 1)] + [thelist[p*(i+1):]]
Шаблон:
{% for x in y|partition:"3"|first %} (working, shows first 1/3)
{% for x in y|partition:"3"|middle %} (not working)
{% for x in y|partition:"3"|last %} (working, shows last 1/3)
Очевидно, что "середина" неверна. Я попробовал "второй", и это тоже не сработало.
Какие-либо предложения?
1 ответ
first
а также last
являются шаблонными фильтрами для получения первого и последнего элементов списка. Нет шаблона фильтра для получения второго, третьего и т. Д. Элементов. Вы должны использовать for item in ..
построить:
{% for row in mylist|partition:"3" %}
{% for item in row %}
do something with {{ item }}
{% endfor %}
{% endfor %}