0

20の異なるStringPropertyプロパティで定義されたAppEngineモデルがあるとします。そして、このモデルのエンティティの更新された値をPOSTするWebフォームがあります。フォームデータを読み込んだ後、次のようになります。

entity_key['name'] = 'new_name'
entity_key['city'] = 'new_city'
entity_key['state'] = 'new_state'
etc...

これらの値をエンティティに実際に割り当てるために、私は現在次のようなことをしています。

if property == 'name':
  entity.name = entity_key['name']
elif property == 'city':
  entity.city = entity_key['city']
elif property == 'state':
  entity.state = entity_key['state']
etc...

20個のelifステートメントなしでプロパティ値を割り当てる方法はありますか?model.properties()関数があることはわかりますが、とにかくこれらすべてを結び付けることはできません。

すべての助けに感謝します。

ありがとうございました。

4

2 に答える 2

2

if/ツリーの場合と同じ効果をelif1つのステートメントで取得できます。

setattr(entity, property, entity_key[property])

これは単なる初歩的なPythonであり、1.5.2以降のすべてのPythonバージョンで同じように機能します(おそらくそれ以前-私は何年も前にPythonを使用していませんでした!-)、AppEngineやとは特に関係ありませんDjangoも、2つの組み合わせもありません。

于 2010-09-08T04:55:11.133 に答える
0

涼しい。参考までに、次の 2 つのスニペットは同一です。

entity.some_property = "cat";

setattr(entity, "some_property", "cat")

setattr 関数については知っていたので、助けてくれてありがとう。

于 2010-09-09T04:31:33.583 に答える