3

在我基于 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

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

4

1 回答 1

1

您正在寻找的是Expando 类

您可以在模型类中安全地替换ndb.Modelndb.Expando,您的持久实体仍然可以完美使用。

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

于 2015-12-02T13:36:47.683 回答