here's what i did and it seems to work: class _Empty: pass class Base4Association(..): #the base for assoc_objects ... class MyCollection( list): factory = None def append( me, obj =_Empty, **kwargs): if obj is _Empty: #marker for notset; else just use it obj = me.factory( **kwargs) #create it from kwargs list.append( me, obj) return obj
@classmethod def myCollectionFactory( klas): m = Base4Association.MyCollection() m.factory = klas return m ... def append( self, *args, **kwargs): item = self._data_appender( *args,**kwargs) #private __setrecord; was before _data_appender ???? self._InstrumentedList__setrecord( item) sqlalchemy.orm.attributes.InstrumentedList.append = append ... themapper.add_property( name, sqlalchemy.relation( actual_assoc_klas, lazy= False, cascade= "all, delete-orphan", uselist= True, collection_class= actual_assoc_klas.myCollectionFactory ) ) > seems this is the month of the many2many relations ;-) > > why is a the whole assoc.proxy + _AssocList needed? > > Can't one do just with overloading/replaceing the > InstrumentedList's append() ? or something of sorts. i know it > might be messier, but with proper hooks it will be > shorter/faster/easier/... > > in my case, i want any kwargs passed to append() to trigger > creating proper assoc_obj off them, and using that one. --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---