最初に ndb.Model を作成し、フィールドの ndb プロパティ タイプを変更したい (たとえば、IntegerProperty を StringProperty に変更したい) としますが、そのデータを失わないように、そのフィールドに格納されている現在のデータをキャストしたいとします。1 つの方法は、単純に新しいフィールド名を作成し、スクリプトを使用してデータを移行することですが、これを実現するためのより便利な方法が他にあるでしょうか?
たとえば、次のモデルがあるとします。
class Car(ndb.Model):
name = ndb.StringProperty()
production_year = ndb.IntegerProperty()
そして、エンティティのインスタンスを保存しました:
c = new Car()
c.name = "Porsche"
c.production_year = 2013
そして、設定した値を「失う」ことなく、 production_year を ndb.StringProperty() に変更したいと考えていました (値はまだ存在しますが、取得することはできません)。production_year を ndb.StringProperty() のインスタンスに変更しただけでは、型が一致しないため、フィールド値は意味のある値を報告しません。
したがって、モデルを次のように変更した場合:
class Car(ndb.Model):
name = ndb.StringProperty()
production_year = ndb.StringProperty()
ドット表記でフィールドを取得しようとすると、値が None になります。誰かがこの状況に遭遇した場合、それを解決するために何をしたか説明してもらえますか? ありがとう。