在我基于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
必须有一些正确的语法才能做到这一点。任何人都可以帮我解决这个问题
答案 0 :(得分:1)
您要找的是Expando class
您可以安全地将ndb.Model
替换为模型类中的ndb.Expando
,您的持久化实体仍然可以完全使用。
注意:但是,它可能无法正常工作;如果您尝试操作(获取/放置)具有未在其类中声明的属性的ndb
实体,ndb.Model
将崩溃。