So lesen Sie alte Eigenschaftswerte in einem _pre_put_hook

8

Ich versuche, ein ndb-Modell-Audit zu implementieren, so dass alle Änderungen an Eigenschaften in jeder Modellinstanz gespeichert werden. Hier ist der Code des _pre_put_hook, den ich gewählt habe, um das zu implementieren.

%Vor%

Das Problem besteht darin, dass old_object immer mit den gleichen Werten des zu aktualisierenden Objekts (object) gefüllt wird. Wie kann ich auf die Eigenschaftswerte des alten Objekts BEFORE zugreifen, bevor put () tatsächlich erstellt wird (_pre_put)?

    
Cato 22.01.2014, 20:02
quelle

1 Antwort

4

BEARBEITEN:

Ich merkte, dass ich im Laufe der Zeit eine Menge Arbeit verrichten musste, die nicht erledigt werden musste (viel CPU / Speicher verbrauchte ganze Entitäten und gab sie weiter, wenn sie nicht benötigt wurden). Hier ist die aktualisierte Version, die einen Verweis auf den ursprünglichen Protobuf speichert und ihn nur deserialisiert, wenn Sie ihn brauchen

%Vor%

Machen Sie einen Klon der Entität, wenn Sie sie zum ersten Mal lesen:

Kopieren Sie eine Entität im Google App Engine-Datenspeicher in Python, ohne dass Eigenschaftsnamen zum Zeitpunkt der Kompilierung bekannt sind

und setzen Sie es auf die Entität selbst, damit später bei Bedarf referenziert werden kann. Auf diese Weise müssen Sie keinen zweiten Datenspeicher lesen, um den Vergleich durchzuführen

Wir überschreiben zwei verschiedene Model-Methoden, um dies zu ermöglichen:

%Vor%     
Nick Franceschina 30.03.2015 23:36
quelle