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