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)?
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:
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%Tags und Links google-app-engine google-cloud-datastore app-engine-ndb