[Zope-dev] Is _getOb() best way to grab a ref to a particular
object?
Brian Lloyd
Brian@digicool.com
Mon, 22 Nov 1999 09:25:56 -0500
> I need to grab a reference to a particular object in the ZODB from an
> external method, bypassing acquisition. Is this the right
> way to do it:
>
> def test(self, REQUEST=None):
> """doc string"""
> myobj =
> REQUEST.PARENTS[-1].aTopLevelFolder.anotherFolder._getOb('id_o
> f_myobj')
> ...do stuff with myobj: myobj.title, myobj.index_html,
> myobj.property = 123 ...
Maybe, maybe not... _getOb will not return an acquired object, but
if the object exists it _will_ be returned as a "wrapped" object
so acquisition will be preserved in the result. I'm not clear from
your example whether this is what you want. If you want the *resulting*
object to be non-acquiring, you'll want to do something like:
def test(self, REQUEST=None):
""" """
# get object named 'foo' from self, but dont allow it
# to be found via acquisition.
obj=self._getOb('foo')
# while we know that foo is not acquired from above, it
# is still wrapped in the context of 'self', so to disable
# acquisition we need to unwrap it.
non_aquiring_obj=obj.aq_base
...
Hope this helps!
Brian Lloyd brian@digicool.com
Software Engineer 540.371.6909
Digital Creations http://www.digicool.com