Gregg Lind wrote:
> I have a many-to-one relation, let's say between Address and User, both
> created using Declarative.
>
> I would like it that if an Address references a User, it will create that
> User, if it doesn't exist.  Otherwise, it should use the existing one.
> There should be no addresses in the table that don't have users.  *It
> could
> be that my whole sense of modeling is fouled up here, and I appreciate
> correction.*
>
> 1.  Is this possible using the current _cascade_ tools?  Is so, how is it
> set up?

no, since you're talking about instantiating an object that doesn't exist
otherwise.

> 2.  If not, then what is the best way to handle this?

the constructor of your Address says, "self.user = User(<args you want>)".
  If that's too early, you can write a SessionExtension.before_flush()
that scans through and ensures all Address objects have a default User()
as desired.

> 3.  From the docs for "relation" it seems like the cascading is all viewed
> from the "parent" (one) side, is that correct?

all relation()s feature cascading.   A two-way relationship consists of
two separate relation()s, "backref" is just a shortcut to creating them
and linking them together.  "parent" and "child" are relative to which
relation() you're referring to.


--~--~---------~--~----~------------~-------~--~----~
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 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to