0

カテゴリ/リーフ実装用に次のクラスがあります。

class CategoryMapper():
    @staticmethod
    def get_tree():
        categories = []
        tree_categories = Category.objects.filter(parent_id__isnull = True) 
        for tree_category in tree_categories:
            leaf_categories = CategoryMapper.get_leafs(tree_category)
            categories += leaf_categories

        return categories

    @staticmethod
    def get_leafs(tree_category, leaf_categories = [], depth = 0):
        if depth > 0:
            child_categories = Category.objects.filter(parent_id__exact = tree_category.id)
            if len(child_categories):
                depth += 1
                for sub_category in child_categories:
                    sub_category_name = ((depth - 1) * '-') + sub_category.category
                    leaf_categories.append([sub_category.id, sub_category_name])

                    return CategoryMapper.get_leafs(sub_category, leaf_categories, depth)
            else:
                return leaf_categories
        else:
            leaf_categories.append([tree_category.id, tree_category.category])
            depth += 1

            return CategoryMapper.get_leafs(tree_category, leaf_categories, depth)

次の日付があります: ID|カテゴリ|親 ID 1|テスト 1|なし 2|テスト 1 子|1 3|テスト 2|なし

実行すると (CategoryMapper.get_tree())、次のようになります。

[[1, u'Test 1'], [2, u'-Test 1 Child'], [1, u'Test 1'], [2, u'-Test 1 Child'], [3, u'Test 2']]

もう一度実行すると、次のようになります。

[[1, u'Test 1'], [2, u'-Test 1 Child'], [3, u'Test 2'], [1, u'Test 1'], [2, u'-Test 1 Child'], [1, u'Test 1'], [2, u'-Test 1 Child'], [3, u'Test 2'], [1, u'Test 1'], [2, u'-Test 1 Child'], [3, u'Test 2']]

get_tree() のカテゴリ変数のように、tree_categories を通過するときに for ループが実行されるたびにその状態が保持されます。私は何を間違っていますか?なぜこのような状態を維持しているのですか?

4

1 に答える 1