8


1

Google App Engine:Modelクラスのプロパティにプログラムでアクセスする方法を教えてください。

モデルクラスがあります。

class Person(db.Model):
  first_name = db.StringProperty(required=True)
  last_name = db.StringProperty(required=True)

このクラスのインスタンスは p`にあり、文字列 s`には値 ’first_name'`が含まれています。 私は何かをしたいのですが。

print p[s]

and

p[s] = new_value

どちらもTypeErrorになります。

自分がやりたいことを達成する方法を誰かが知っていますか?

5 Answer


7


モデルクラスが十分に知的であれば、これを行うための標準的なPythonの方法を認識するべきです。

試してください:

getattr(p、s)setattr(p、s、new_value)

hasattrもあります。


3


Jimのおかげで、私が探していた正確な解決策は次のとおりです。

p.properties()[s] .get_value_for_datastore(p)

他のすべての回答者に、あなたの助けをありがとう。 Modelクラスがこれを行うためのpython標準の方法を実装することも期待していたでしょうが、何らかの理由でそうではありません。


1


getattr(p、s)setattr(p、s、new_value)


1


試してください:

p.model_properties()[s] .get_value_for_datastore(p)
http://code.google.com/appengine/docs/datastore/propertyclass.html#Property_get_value_for_datastore[the documentation]を参照してください。


-1


p.first_name = "新しい名" p.put()

またはp = Person(first_name = "Firsty"、last_name = "Lasty")p.put()