2012-07-10 75 views
1

使用舊數據存儲我已使用密鑰。現在,我必須使用IDS(從NDB Cheat Sheet doc拍攝):如何使用NDB的id屬性?

user = User.get_by_id(user_id) 
if user is None: 
    user = User(id=user_id) 

不過貌似這個代碼不工作 - 記錄添加幾次。

(user_id是在我的情況字符串)

+0

你如何創建實體?他們有父母嗎? – aschmid00 2012-07-10 20:29:07

+0

@aschmid00,問題中的代碼包含實體的創建 - 請參閱第3行。 – 2012-07-11 15:24:42

回答

4

我找到了原因,我上面的代碼是正確的,bu我的班級包含id屬性:

class User(ndb.Model): 
    id = ndb.StringProperty() 

這是問題所在。

1

請參閱部分「建設的一個關鍵」的NDB小抄的。

user = ndb.Key('User', user_id).get() 
if user is None: 
    user = User(id=user_id) 

或試試這個,讓我知道,如果它的工作原理:

user = User.get_by_id(user_id) 
    if user is None: 
    user = User(id=user_id) 

順便說一句,即使user_id是一個字符串,你應該使用'%s' % user_id

1

聽起來像你想的事務操作:

user = User.get_or_insert(user_id)