Я строю функцию python, которая возвращает массив, который будет использоваться в поле выпадающего списка. Я пробовал две версии до сих пор.Прокрутка по категориям рекурсивно
Оба они работают с первым возвратом правильно отформатированного поля выбора. Однако первое решение идет только на два уровня. Я намерен добавить дополнительную глубину в категории.
Мой второй пример - моя попытка сделать это рекурсивно для поддержки большего количества уровней. Он работает, но мне интересно, как я могу его оптимизировать и добавить тире, похожие на первый пример.
# first example two levels deep, formatted properly with dashes
def build_choice_tree():
categories = Category.query.get(1).children
items = [(1, 'None')]
for root in categories:
items.append((root.id, root.name))
if root.children:
for subcat1 in root.children:
items.append((subcat1.id, '- ' + subcat1.name))
if subcat1.children:
for subcat2 in subcat1.children:
items.append((subcat2.id, '--' + subcat2.name))
return items
# second example goes multiple levels, needs dashes
def build_choice_tree2():
categories = Category.query.get(1).children
items = []
def loop(categories):
for category in categories:
items.append((category.id, category.name))
if category.children:
loop(category.children)
return items
result = loop(categories)
return result
Вам нужны пробелы после идентификатора? Или ваш смысл - каждый слой имеет одинаковую длину? –
Мне нужно пространство между тире и именем – Casey