【发布时间】:2014-01-08 19:28:20
【问题描述】:
我有一个具有多个属性的数据存储实体。每个属性都使用单独的方法进行更新。但是,我经常发现任何一种方法都会用旧值(Null)覆盖它没有修改的属性。
例如。
class SomeModel(ndb.Model):
property1 = ndb.StringProperty()
property2 = ndb.StringProperty()
def method1(self, entity_key_urlsafe):
data1 = ndb.Key(urlsafe = entity_key_urlsafe).get()
data1.property1 = "1"
data1.put()
数据 1 实体现在具有值为“1”的 property1
def method2(self, entity_key_urlsafe):
data1 = ndb.Key(urlsafe = entity_key_urlsafe).get()
data1.property2 = "2"
data1.put()
数据 1 实体现在具有值为“2”的 property2
但是,如果这些方法连续运行 - 方法 2 似乎会用其初始值 (Null) 覆盖 property1。
为了解决这个问题,我一直在使用延迟库,但它不够可靠(延迟实体似乎时不时地消失)或可预测(_countdown 时间似乎充其量只是为了指导) .
我的问题是:有没有办法在调用 data1.put() 时只检索和修改数据存储实体的一个属性而不覆盖其余属性? IE。在 method2 的情况下 - 我可以只写入 property2 而不覆盖 property1 吗?
【问题讨论】:
标签: python google-app-engine app-engine-ndb