Migrieren von Daten beim Ändern des Eigenschaftstyps eines NDB-Felds

Angenommen, ich habe zunächst ein ndb.Model erstellt und wollte den ndb-Eigenschaftstyp eines Felds ändern (z. B. IntegerProperty in StringProperty), wollte aber die in diesem Feld gespeicherten aktuellen Daten umwandeln, damit ich diese Daten nicht verliere. Eine Methode wäre, einfach einen neuen Feldnamen zu erstellen und die Daten dann mit einem Skript zu migrieren. Gibt es jedoch andere bequemere Möglichkeiten, dies zu erreichen?

Angenommen, ich hatte das folgende Modell:

class Car(ndb.Model):
    name = ndb.StringProperty()
    production_year = ndb.IntegerProperty()

Und ich habe eine Instanz der Entität gespeichert:

c = new Car()
c.name = "Porsche"
c.production_year = 2013 

Und wollte production_year in ndb.StringProperty () ändern, ohne den von mir festgelegten Wert zu "verlieren" (er wäre noch vorhanden, aber nicht abrufbar). Wenn ich nur production_year in eine Instanz von ndb.StringProperty () ändere, gibt der Feldwert keinen sinnvollen Wert aus, da der Typ nicht übereinstimmt.

Also, wenn ich das Modell geändert habe:

class Car(ndb.Model):
    name = ndb.StringProperty()
    production_year = ndb.StringProperty()

Der Versuch, das Feld mit Punktnotation abzurufen, würde den Wert None ergeben. Jemand ist in diese Situation geraten und können Sie erklären, was Sie getan haben, um sie zu lösen? Vielen Dank.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage