Есть модель-дерево. Некоторым view-ам я отдаю само дерево (метод tree) и там уже с ним работаю, а некоторым сразу форматированный набор списков для вывода в форме (метод choises).
Два вопроса: 1. Насколько приемлемо держать такие методы внутри класса, место ли им тут, или всю возню надо делать во view?
2. _own_tree у меня содержит все дерево и инициализируется при первом вызове метода tree. Каково его время жизни? Мне кажется что делаю не так как надо...
class Division(db.Model, BaseNestedSets):
__tablename__ = 'divisions'
id = db.Column(db.Integer, primary_key=True)
division = db.Column(db.String(255), nullable=False)
_own_tree = None
@property
def tree(self):
if self._own_tree is None:
self._own_tree = self.drilldown_tree()
return self._own_tree
def _choises_tree(self, tree=None, choices=None):
if choices is None:
choices = []
if tree is not None:
for division in tree:
div_id = division['node'].id
div_level = division['node'].level - 1
div_name = division['node'].division
choices.append([
div_id,
''.join(('\xa0' * div_level, div_name))
])
if 'children' in division:
self._choises_tree(division['children'], choices)
return choices
@property
def choises(self):
return self._choises_tree(self.tree)
cast foozzi