私は選択ドロップダウンフィールドで使用する配列を返すpython関数を構築しています。私はこれまでに2つのバージョンを試しました。再帰的にカテゴリをループする
両方とも機能し、最初は正しくフォーマットされた選択フィールドを返します。しかし、最初の解決策は2つのレベルにしか行きません。私は、カテゴリに深みを加えるつもりです。
私の2番目の例は、これを再帰的に実行してより多くのレベルをサポートしようとしています。それは動作しますが、私はそれをどのように最適化し、最初の例と同様のダッシュを追加することができますかと思います。
# 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
idの後ろにスペースが必要ですか?または、あなたの意味はそれぞれのレイヤーが同じ長さですか? –
ダッシュと名前の間にスペースが必要 – Casey