Hi svil, OK, I found back http://groups.google.com/group/sqlalchemy/browse_thread/thread/c1bd8cfe862441d6/83f3d5d6fde74b89
It seems that the way I planned to do it is the right way to do it if I understood well. I added the lines 113-117 at http://pastebin.com/f17e29b0f but it gives me an error : <class 'sqlalchemy.orm.exc.FlushError'>: Instance <SpeciesRegion at 0x8f216cc> is an unsaved, pending instance and is an orphan (is not attached to any parent 'Species' instance via that classes' 'regions' attribute) Any idea ? Thanks, Julien On Tue, 2008-12-16 at 16:10 +0200, a...@svilendobrev.com wrote: > look down the group recently, there was a similar question on .copy(). > this is more of a semantical question, because diff.things need be > treated differently. > - own references 1:1 - either None or copy of the referenced object > - references m:1 - the reference itself > - collecions 1:many) - either new empty collection or new collection > of copies of the items > - asociation - new collection conating links betwen new owner and the > items. > there may be more sematics involved, e.g. in bitemporal case all above > are implemented as associations but are not always treated as such, > copy-wise. and other cases. > > svil > > On Tuesday 16 December 2008 15:04:03 Julien Cigar wrote: > > Dear SQLAlchemy users, > > > > I have a mapped object called "Species" with a lot of relation() in > > it. The user wants to have a "duplicate" function, so for a given > > "Species" a new exact copy should be created, with all the > > relation(). > > > > I have pasted a copy of my code here : > > http://pastebin.com/f3e50a4fa > > > > As you can see at lines 53-55 of my paste, I just iterate on those > > relations and I use a setattr() on the new object. It works > > perfectly, except for the "regions" relation (line 16), where > > SQLAlchemy does UPDATE statements: it replaces the > > "SpeciesRegion.species_id" of the source Species with the new > > duplicated Species.id, so the source Species has no more "regions" > > (SpeciesRegion). It seems logical to me because SpeciesRegion is an > > association object, but I wondered if there is a better way to do > > it than 1) iterate of SpeciesRegion objects of the source Species, > > 2) create a new SpeciesRegion, 3) Adapting SpeciesRegion.region 4) > > add the new SpeciesRegion to the new Species.regions ? > > > > Thanks, > > Julien > > > > > -- Julien Cigar Belgian Biodiversity Platform http://www.biodiversity.be Université Libre de Bruxelles (ULB) Campus de la Plaine CP 257 Bâtiment NO, Bureau 4 N4 115C (Niveau 4) Boulevard du Triomphe, entrée ULB 2 B-1050 Bruxelles Mail: jci...@ulb.ac.be @biobel: http://biobel.biodiversity.be/person/show/471 Tel : 02 650 57 52 --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---