Comments

Up one level
Re:Zope3: Nutzung von Datenbank-Generationen (database generations) by Michael Howitz — last modified 2006-05-16 08:59
Der letzte Kommentar von Bernd Dorn hat durchaus seine Berechtigung. Ich habe aber folgende Beobachtung gemacht:
Ich benutze zope.formlib zur Anzeige der Formulare. Wenn ich nun zu einer Klasse für die schon Objekte in der ZODB existieren ein neues Schema-Feld hinzufüge (im Interface und als Attribut auf der Klasse), dann bekomme ich regelmäßig einen AttributeError, wenn ich mir das Formular zu einem dieser Objekte anzeigen lasse. Der AttributeError betrifft immer das neue Attribut, welches es laut zope.formlib nicht gibt, obwohl es auf der Klasse definiert ist.
Re:Zope3: Nutzung von Datenbank-Generationen (database generations) by Bernd Dorn — last modified 2006-05-12 17:15
in:
for person in findObjectsProviding(root, IPerson):
# Schleife über alle Objekte, die IPerson erfüllen.
person.gebdat = None # Setzen des Defaults

wird None auf jedes person object gesetzt, aber würde man vor dem setzen
person.gebdat ausgeben, gibt es auch None zurück
es ändert sich durch dieses evolve nichts ausser dass gebdat auf None im objekt gesetzt werd, da aber None immutable ist, ist das irrelevant

btw: die seite hier ist sehr nüztlich, ich hab schon einiges abgekuckt hier :)

sg


Re:Zope3: Nutzung von Datenbank-Generationen (database generations) by Michael Howitz — last modified 2006-05-10 08:43
Der Kommentar von Bernd Dorn kling zwar logisch, aber wie bereits im Blog-Eintrag geschrieben, erscheinen diezu einer Klasse neu hinzugefügte Attribute nur auf der Klasse. (Die Änderung bezieht sich ja nur auf die Klasse!) Auf die Instanzen der Klasse (Objekte) können die neuen Attribute nur mittels database generations übertragen werden.
Re:Zope3: Nutzung von Datenbank-Generationen (database generations) by Bernd Dorn — last modified 2006-05-09 22:33
In Falle dieses Beispiels würde es eigentlich keine Generations brauchen, da ja gebdat in der Klasse definiert wird und somit auch in allen alten instanzen automatisch vorhanden ist.

Ein Beispiel das Generations braucht wäre etwa:

class MyContainer(Container):
def __init__(self):
self['etwas'] = Etwas()