Yup, I've done this is well. Specifically, I've used RelatedJoins so
that you can have multiple parents or children:
class Person(SQLObject):
name = StringCol(alternateID=True, length=30)
child = RelatedJoin('People',intermediateTable='peopleparentchild',
joinColumn='parent',otherColumn='child')
Assign like this like this:
john = Person(name='john')
chris = Person(name='chris')
christina = Person(name='christina')
paul = Person(name='paul')
paula = Person(name='paula')
# Make chris and christina children of john
john.addPerson(chris)
john.addPerson(christina)
# Make paul and paul parents of john
paul.addPerson(name='john')
paula.addPerson(name='john')