をfloat型に整数プロパティ値を変更して、私のような、既に上記で作成したエンティティ、あります最初はdb.expando + App Engineの+値
class Obj (db.Model):
name = db.StringProperty(required=True)
rating = db.IntegerProperty(default=0, required=False)
を設定するモデル次ました:
名を= "test1"、rating = "3"
したがって、評価タイプをfloatに変更する必要があります。
:私は値をfloatにそれを更新するためのOBJモデルのインスタンスを取得することができるよ前に、私はすでに、次のエラーを持っているdb.ExpandoProperty rating must be a float
class Obj (db.Expando):
name = db.StringProperty(required=True)
rating = db.FloatProperty(default=0, required=False)
でこれを達成しようとしていました
最初は、db.Expandoを使用していなかったので、このエラーが発生しました。しかし、db.Expandoを使用した後、私はこのエラーが発生しないと仮定しましたか?それは動的に価値を変えることができるので、私は記事を読むように入力してください。
db.Expandoを初めて使用しているので、私は助けが必要です。誰かが何が起こったのか手がかりを持っていますか?
EDIT
for o in Obj.all():
a = []
if o.rating:
o.rating = float(str(restaurant.rating))
else:
o.rating = float(0)
a.append(restaurant)
db.put(a)
コード上にした後、同じエラーがポップアップ
Property rating must be a float
SOLUTION 一時的モデル定義評価を除去し、第一フロートする値を更新しdb.FloatPropertyで新しいレイティング定義を追加します
右のExpandoセマンティクスは、クラス内で宣言されているプロパティ*にのみ適用されます。レーティングプロパティ定義を削除すると、その値がintとして取得されます。それを浮動小数点に変換したい場合は、それを変更し(e.rating = float(e.rating))、エンティティを書き戻す必要があります。可能であれば、map/reduceライブラリを使用してデータストア全体でこれを行います。 –