class Contacts(db.Model):
first_name = StringProperty()
last_name = StringProperty()
phone_number = PhoneNumberProperty()
new_contact = Contacts(first_name="Homer", last_name="Simpson", phone_number = 1234566)
new_contact.put()
我是新来的GAE数据存储,但每个GAE数据存储文件(见下面如果有兴趣),我不能修改的实体(例如,PHONE_NUMBER)的一个属性。我必须重新声明所有属性,然后放置()新的实体。忽略来自新实体的先前声明的属性导致它们被声明为无。是否有解决方法 - 例如手动覆盖密钥名称生成函数 - 因此实体保持相同的密钥?
#从GAE数据存储文档: 要更新现有的实体,修改对象的属性,然后调用put()方法。对象数据覆盖现有的实体。每次调用put()时,整个对象都会发送到数据存储区。注意:数据存储区API不区分创建新实体和更新现有实体。如果对象的键代表一个存在的实体,调用它的put()方法将覆盖该实体。
找到解决方案 - 需要在创建实体时手动设置键名,然后在更改实体的属性后重新声明相同的键名 - ASSUME:new_contact = Contacts(key_name ='homerjsimpson',first_name ='homer',last_name = 'simpson',phone_number = 123456).put()TO UPDATE phone_number-- new_contact = Contacts(key_name ='homerjsimpson',first_name ='homer',last_name ='simpson',phone_number = 999999999)。不会创建新的实体 – 2011-04-20 21:41:47