Le vendredi 29 janvier 2010, Vladislav Vorobiev <vavvav@mykniga.de> a écrit : ======================================================================
I try to save references to objects as attribute in a list.
object.refList=getattr([self. context.pfad, 'object'], [self.context.pfad, 'object1'])
After adding and transaction commit I can get my linked objects with all attributes and methods
myObject.refList [<myType at object>]
myObject.refList[0].objectValues()[0].getPhysicalPath() ('', 'path', 'object')
myObject.refList[0].objectValues()[0].absolute_url() http://localhost/pfad/object
I restart the instance and get some other results
myObject.refList [<myType at object>]
myObject.refList[0].objectValues()[0].getPhysicalPath() ('object',)
myObject.refList[0].objectValues()[0].absolute_url() 'object'
It seems that the in list referenced object ist no more in context after restart.
the constructor for this looks like:
object = myObject() id=myObject myObject.id = id myObject.title= id myObject.refList=getattr([self.context.pfad, 'object'], [self.context.pfad, 'object1']) self.context._setObject(id, ob) ======================================================================
Modifying an object's list attribute "in place" doesn't mark the persistent object as modified ; so as soon as the object is removed from the cache, it's modifications are lost. You should probably : - use persistent lists (persistent.list.PersistentList) instead of "basic" lists - mark object as modified manually (myObject._p_changed = True) - or change value of object list attribute : myList = myObject.refList myList[0] = ... myObject.refList = myList Hope this helps, Thierry -- Chef de projets intranet/internet Office National des Forêts - Département Informatique 2, Avenue de Saint-Mandé 75570 Paris Cedex 12 Tél. : 01 40 19 59 64 Fax. : 01 40 19 58 85 Mél. : thierry.florac@onf.fr Web. : http://www.onf.fr