try: ob = r.getObject() ob.function() or if that doesn't work: ob = catalog.getobject(r.data_record_id_) ob.function() Bear in mind that getObject traverses to the object which is expensive both in time and memory if the number of results is large. hth, -Casey On Wednesday 29 May 2002 04:05 pm, Nicholas Henke wrote:
Hello~~ I am playing with using the Catalog class in ZCatalog along with CatalogQuery to create a generic object layer on top of ZODB. I can index and search til I am blue in the face, and I always get the correct answers. Now for the problems...
Say I have the following obj: class test(Persistent): variable = 1 def function(self): print self.__dict__
now if I do: catalog = Catalog() catalog.addIndex('variable', Fieldindex('variable')) catalog.addColumn('variable') obj = test() catalog.catalogObject(obj, id(obj))
catalog_query = CatalogQuery(catalog, "variable==1") results = catalog_query() for r in results: print r.variable # ok print r.getRID() # ok print r.function # NameError
...so I can get an object (a mybrains instance )back that allows me to print r.variable, but I cannot get r.function(). How does one do this? Is there a mapping between RIDs in the catalog and real objects somewhere? Do I need to do that mapping in an IOBtree (it would make the most sense since I am using id(obj) as the uid in the catalog)? Is there somewhere in Zope/google/web that does this?
Thanks for any help!! Nic
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )