Perrin Harkins wrote:
On Mon, 6 Mar 2000, Evan Simpson wrote:
This is such a stupid question, but I can't seem to figure it out from the docs. How do I make an object in Zope reference another object? [...]
From: Perrin Harkins <perrin@primenet.com> 2. Store the object as an attribute of the referencing object. This has to be done (I think) from an External Method, since you *aren't* setting a property. You do something like "self.fooref = self.path.to.other.aq_base" which DTML doesn't allow.
You can do this, but you must be sure you understand that your object now references the other object without the Zope framework's 'knowledge'. This is not a bad thing and happens all the time, but you should be familiar with what this does to things like garbage collection, persistent object deactivation, and circular references.
Thanks, that sounds like what I'm after. I don't quite understand why this is not setting a property. Can you point me to some documentation that might help explain the difference?
I don't know what you were trying to do before, so I can't answer this.
I guess putting in a little Python is no big deal, but it does break my ultimate goal of letting non-technical people create new classes of content. Is there any plan to add inter-object relationships to ZClasses?
You mean references? We've thought about this problem a little and Jim and I discussed this over Chinese buffet once, I obviously had less of a clue than him, but I belive the result of our discussion is that there should be some sort of standard for one Zope object to refer to another. The simplest way we could think of is simply storing the path. Such as: attribute = "../../relative/path/to/other/object" or perhaps: attribute = '/absolute/path/to/object' Then when you want the object you ask Zope to resolve that path for you. Currently you can use REQUEST.resolve_url(attribute) to do that for you. If you're not working on python you can simply set a string property as the path. This is how ZCatalog does it (actually ZCatalog uses a slightly dumber version of this concept, don't ask). HOWEVER, the lack of any kind of standard or support for such references in the framework has bitten ZCatalog (and webdav) in the past, and the decisions we made will probably come back to haunt us real soon now. You have been warned. -Michel