On Sep 9, 2006, at 10:11 AM, Aaron Spike wrote: > I've got a one-to-one relationship something like this. > > class Person(object): > pass > class Photo(object): > pass > > persons_table = Table('persons', metadata, > Column('id', Integer, primary_key=True), > Column('firstname', String(255), > Column('lastname', String(255), > ... > ) > photos_table = Table('photos', metadata, > Column('person_id', Integer, primary_key=True), > Column('photo',), > ForeignKeyConstraint(['person_id'], > ['persons.id'],'persons_photos_fk') > ) > > photomapper = mapper(Photo, photos_table) > personmapper = mapper(Person, persons_table, > properties={'photo':relation(Photo, uselist=False)}) > > And now to access a person's photo I have to do > "person.photo.photo". Is > there anyway I can do "person.photo" instead and still have it lazy > load > the photo? I could make a getPhoto() method on the class but is a > property possible?
You might consider doing it like this: class Person(object): def _get_photo(self): if self._photo is None: return None return self._photo.photo def _set_photo(self = photo): if self._photo is None: self._photo = Photo() self._photo.photo = photo photo = property(_get_photo, _set_photo) ... personmapper = mapper(Person, persons_table, properties={'_photo':relation(Photo), uselist=False)}) That way you can use a normal lazy relationship, and can even access the '_photo' attribute directly if you need to. ~ Daniel ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Sqlalchemy-users mailing list Sqlalchemy-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users