Code: Alles auswählen
class Page
acts_as_tree
end
Wie sähe die Django-Lösung aus? Ich biete
Code: Alles auswählen
class Page(models.Model):
parent = acts_as.Tree(related_name='children')
class Page(models.Model):
acts_as = Tree()
Ich nutze in beiden Fällen aus, dass Django automatisch die Methode `contribute_to_class` für ein Objekt aufruft, das im Kontext eines `Model` einem Attribut zugewiesen wird. Dort kann ich nun alle weiteren Attribute definieren, einen Manager zu weisen und weitere Methoden erzeugen. Funktioniert ausgezeichnet :)
Code: Alles auswählen
class Tree(object):
def contribute_to_class(self, model, name):
TreeManager().contribute_to_class(model, 'objects')
models.ForeignKey('self', related_name='children', blank=True, null=True)\
.contribute_to_class(model, 'parent')
model.ancestors = Tree.ancestors
...
@staticmethod
def ancestors(self):
...
Stefan