On Monday 06 July 2009 16:44:14 Diez B. Roggisch wrote: > On Monday 06 July 2009 16:37:37 Diez B. Roggisch wrote: > > Hi, > > > > I'm faced with a situation where I have > > > > - a 1:n-relationship between Document and DocumentRevision-objects > > - want to delegate most properties of Document to DocumentRevison, which > > means I need an "active" revision. > > > > Modelling that active_revision as "normal" ManyToOne-relationship on the > > document gets me (understandably) into circular-dependency-hell. > > > > Now I know that you can create deferred constraints in some databases > > as "deferrable" which means you can create circular dependencies that > > must only be valid at commit-time, not while inserting. > > > > See e.g. > > > > http://www.network-theory.co.uk/docs/postgresql/vol1/CREATETABLE.html > > > > for PG doing this. > > > > Is there any way to exploit this kind of foreign key reference via > > elixir, or maybe SA itself? > > Ok, found it - whyever it skipped my attention at the first look: > > > active_revision = ManyToOne("DocumentRevision", > use_alter=True, > #constraint_kwargs=dict(deferrable=True, > #initially="deferred") > ) > > Uncomment the two bottom lines to modify the deferrable-state.
Ok, unfortunatly this was only good for emmiting working SQL. However, trying to actually use that code results in CircularDependencyError: Circular dependency detected [(<sqlalchemy.orm.state.InstanceState object at 0xa2c572c>, <sqlalchemy.orm.state.InstanceState object at 0xa2ca2ec>), (<sqlalchemy.orm.state.InstanceState object at 0xa2ca2ec>, <sqlalchemy.orm.state.InstanceState object at 0xa2c572c>)][] So - anybody has an working example of a mutually referring relationship? Diez --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "SQLElixir" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/sqlelixir?hl=en -~----------~----~----~----~------~----~------~--~---
