I have a ContentObject class mapped using:

co_mapper = orm.mapper(ContentObject,
   content_objects_table,
   extension=COMapperExtension(),
   polymorphic_on=content_objects_table.c.type,
   polymorphic_identity='ContentObject',
   properties={
    'theme': orm.relation(Theme),
    'resources': orm.relation(Resource,
                              secondary=co_resources_table),
    'children': orm.relation(ContentObject,
        secondary=co_children_table,
 
primaryjoin=content_objects_table.c.id==co_children_table.c.parent_id,
 
secondaryjoin=co_children_table.c.child_id==content_objects_table.c.id,
        backref='parents'),
    'translations': orm.relation(ContentObjectTranslation,
backref='co')
   }
)

co = ContentObject()
co.children.append(Session.query(ContentObject).get(1))
# assert co not in Session # fails!
co.theme = Session.query(Theme).get(1) # Session flushes automatically
when retrieving a theme, and I get an error because the  theme_id
column (with nullable=False) is not set yet

IntegrityError: (IntegrityError) content_objects.theme_id may not be
NULL u'INSERT INTO content_objects (type, parent_id, position,
theme_id, data, keywords) VALUES (?, ?, ?, ?, ?, ?)' ['group', None,
None, None, None, '']

If I remove backref='parents' it works as expected. Do I have to turn
auto-flush off to avoid incidental flushes?


Best regards,
Adam

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to