add tagging support

Эм, а если 6 уровней вложенности будет? Еще копипастить? Лучше создай темплейт-таг, который принимает на входе дерево, а на выходе возвращает плоский список и параметр depth, например, такой:
[
{'item_code', 'Item Name', 0},
{'sub_item_code', 'SubItem Name', 1},
{'sub_item2_code', 'SubItem2 Name', 1},
{'item2_code', 'Item2 Name', 0},
]
Для примера реализации можно посмотреть на https://docs.djangoproject.com/en/dev/ref/templates/builtins/#unordered-list