Ooooops, not yet fully awake ... obviously you are right about the m-n relationship. Thank you for working around it ...
Also thank you for your answer it is valid for any 1-n relationship I would have thought of! Chris From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Michael Bayer Sent: Monday, March 10, 2008 3:00 PM To: [email protected] Subject: [sqlalchemy] Re: "copying" a one-to-many relationship On Mar 10, 2008, at 9:19 AM, Christophe Alexandre wrote: Hi, Assuming you have a one-to-many type of relationship, say one user has several roles. The underlying "role" table would hold one foreign key referring to the user table. A properly written SA ORM allows you to write: user1.roles Now assuming you have just created a new user (user2), what is the easiest way if you want to "copy" roles from user1? I tried: user2.roles = user1.roles But then it deletes the roles from user1. my first impression is that a relation from "users" to "roles" is typically a many to many. That you are looking to have the same roles present on more than one user implies this as well. But we can still work with one-to-many. Same if I go through a copy.copy(): import copy user2.roles = copy.copy(user1.roles) copy is going to fail because its copying the full state of each user, including the primary key, instance key, and probably the _state which is putting your session into an invalid state. Does anyone have an idea? I would like to avoid going through a loop and creating the roles one by one. First I'd put a convenience method on Role to handle generating a new Role object with the same value: def asnew(self): return Role(self.name, ...) then I'd just use a list comprehension to make the copy: user2.roles = [r.asnew() for r in user.roles] --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" 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/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---
