8

私はモデルクラスを持っています:

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

にこのクラスのインスタンスがありp、文字列sには値が含まれています'first_name'。私は次のようなことをしたいと思います:

print p[s]

p[s] = new_value

どちらもTypeError.

どうすれば私が望むものを達成できるか知っている人はいますか?

4

5 に答える 5

7

モデルクラスが十分にインテリジェントである場合、これを行うための標準的なPythonの方法を認識する必要があります。

試す:

getattr(p, s)
setattr(p, s, new_value)

hasattrも利用できます。

于 2008-09-18T12:14:37.367 に答える
3

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

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

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

于 2008-09-18T22:46:08.817 に答える
1

試す:

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

ドキュメントを参照してください。

于 2008-09-18T12:06:25.517 に答える
1
getattr(p, s)
setattr(p, s, new_value)
于 2008-09-18T11:54:13.283 に答える
-1

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

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

于 2008-10-04T07:10:55.510 に答える