On Aug 28, 2010, at 5:54 PM, uramagget wrote: > > > On Aug 27, 4:16 pm, "Diez B. Roggisch" <[email protected]> wrote: >> On Aug 27, 2010, at 8:54 PM, uramagget wrote: >> >> >> >> >> >>> Hello Elixir, >> >>> Fairly new to this Elixir + SA abstraction, and the ease of >>> establishing relationships between entities sold me. I've attempted >>> giving this a shot by trying to implement it on a forum system I've >>> been working on, with the following code: >> >>> http://paste.pocoo.org/show/x0kg5V5686py3oYjUadw/ >> >>> The Topic entity initializes fine without the `lastpost` relationship, >>> although when attempting to initialize it with the relation specified, >>> an exception is raised. Is there something that I am doing wrong that >>> I need to rectify? I'm not exactly sure what specifying an `inverse` >>> argument would do, as I believe I tried passing inverse='Topic' for >>> the `lastpost` relation. >> >>> Exception: Several relations match as inverse of the 'topic' relation >>> in entity 'Post'. You should specify inverse relations manually by >>> using the inverse key >> >> You define the relation wrong - you want a >> >> lastpost_id >> >> column on Topic, which means that you need to declare it as >> >> lastpost = ManyToOne("Post") >> >> on Topic. Remember, from the view of Post, one post *could* be set on a >> great many Topics as lastpost - that's not your intended semantic, but it's >> perfectly possible from a DB-point of view. >> >> And if Elixir still complains, you need to define inverse="<name of the >> relation>", *NOT* with the name "Topic" or "Post" - these are the classes, >> not the relations!!! >> >> Diez > > > Thanksa bunch; it works fine, except that doesn't seem to be the case > for table creation: SA views it as a circular reference.
Which is of course right. Topic refers to Post, and Post to Topic. The trick is to defer the creation of the constraint on the lasttopic_id-column. According to the documentation, the option use_alter=True to ManyToOne is the right way to do that. 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.
