2014-03-06 31 views
0

我想知道什麼樣的正確模式應該是使用端點 - 原型數據存儲更新現有的數據存儲對象。更新數據存儲對象的模式

例如,假設像一個從GDL影片的模型:

class Task(EndpointsModel): 
    detail = ndb.StringProperty(required=True) 
    owner = ndb.StringProperty() 

想象我們想更新任務的「細節」。

我認爲是這樣的:

@Task.method(name='task.update', 
      path='task/{id}', 
      request_fields=('id', 'detail')) 
def updateTask(self, task): 
    pass 

然而,「任務」大概包含對象的先前存儲的版本,我不是如何訪問「新的」詳細明確的變量哪些更新對象並重新存儲它。

換句話說,我想寫的東西是這樣的:

def updateTask(self, task_in_datastore, task_from_request): 
    task_in_datastore.detail = task_from_request.detail 
    task_in_datastore.put() 

是否有一種模式,就地與終點,原數據存儲對象的更新?

謝謝!

回答

0

任務是你的模型,你可以輕鬆地更新這樣的:

@Task.method(name='task.update', 
     path='task/{id}', 
     request_fields=('id', 'detail')) 
def updateTask(self, task): 
    # Task.get_by_id(task.id) 
    Task.detail = task.detail 
    Task.put() 
    return task 
1

documentation的詳細信息,這

酒店id是默認 提供五個輔助性質的一種幫助您執行這樣的常見操作(通過ID檢索)。在 另外還有一個entityKey財產提供了數據存儲關鍵的一個base64編碼 版本,並可以以類似的方式 作爲id使用...

這意味着,如果你使用默認id你的財產當前對象將被檢索,然後來自請求的任何更新將替換當前對象上的更新。因此,做最瑣碎的事:

​​

將執行你想要的。

相關問題