Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Support FAQs Entwicklung Wie komme ich über eine relative Pfadangabe an ein Objekt in der ZODB?
Eine Ebene höher

Frage

Wie komme ich über eine relative Pfadangabe an ein Objekt in der ZODB?

Antwort

Der ObjectManager von Zope stellt hierzu die Methode restrictedTraverse() zur Verfügung.

Innerhalb eines PythonScripts wird dies wie folgt benützt:

   obj = container.restrictedTraverse('/path/to/object')

Hinter einem Virtual Host Monster muss man gegebenenfalls noch das Wurzelverzeichnis ermitteln und im Pfad ergänzen. Im CMF steht dazu portal_url.getPortalPath() zur Verfügung.

Falls man keinen kompletten Pfad eines Objektes hat, sondern nur dessen ID hat (jedoch eine Referenz auf das Folderobjekt, in dem sich das Objekt befindet), so kann man folgendes benutzen:

   obj = folder[id]

   oder 

   obj = getattr(folder, id)

Bei Verwendung des getattr() Aufrufes ist zu Beachten, dass hier Acquisition Anwendung findet und ein Objekt mit Id id acquiriert werden könnte. Ansonsten muß anstatt folder aq_base(folder) verwenden.


Letzte Änderung: 30.04.2006 • Autor: ajung