在ndb对象中动态设置属性

时间:2013-09-08 10:06:43

标签: python google-app-engine app-engine-ndb

在我基于GAE的网络应用程序中,我加载了一个NDB实体并尝试编辑它。但问题是我要编辑的字段是从字符串动态决定的,因此我无法对其进行硬编码。

我尝试过这些东西,但没有工作

obj[fieldName] = newValue
obj.populate(fieldName,newValue)
obj.populate(Modlue._properties[fieldName] = newValue) #keyword can't be an expression
setattr(obj, fieldName,newValue) #value not being set

必须有一些正确的语法才能做到这一点。任何人都可以帮我解决这个问题

1 个答案:

答案 0 :(得分:1)

您要找的是Expando class

您可以安全地将ndb.Model替换为模型类中的ndb.Expando,您的持久化实体仍然可以完全使用。

注意:但是,它可能无法正常工作;如果您尝试操作(获取/放置)具有未在其类中声明的属性的ndb实体,ndb.Model将崩溃。

相关问题