0

假设我有一个定义了 20 个不同 StringProperty 属性的 AppEngine 模型。然后我有一个 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与您的/树相同的效果elif可以通过单个语句获得:

setattr(entity, property, entity_key[property])

这只是基本的 Python,自 1.5.2 以来的每个 Python 版本都以相同的方式工作(也许更早——我多年前没有使用 Python!-),并且与 App Engine 无关,也与Django,也没有将两者结合起来。

于 2010-09-08T04:55:11.133 回答
0

凉爽的。仅供他人参考,以下两个片段是相同的:

entity.some_property = "cat";

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

我确实知道 setattr 函数,Alex,所以感谢您帮助我。

于 2010-09-09T04:31:33.583 回答