2013-08-28 33 views
0

我有一個ndb模型,我使用Python +谷歌appengine。我想將主鍵添加到我的第一個字段「名稱」。例如,我添加了一個名稱「Ada」,之後如果我想再次添加「Ada」,它不會添加,它會給我一個錯誤。我可以用django輕鬆完成,但我無法用google appengine弄清楚。你能告訴我一種解決方法嗎?這裏是我的代碼:谷歌Appengine數據存儲我想添加primary_key

class User(ndb.Model): 
    username = ndb.StringProperty(indexed=False) 
    created_date = ndb.DateTimeProperty(auto_now_add=True) 
    updated_date = ndb.DateTimeProperty(auto_now_add=True) 
+1

我認爲這是你正在尋找的東西:http://squeeville.com/2009/01/30/add-a-unique-constraint-to-google-app-engine/ – rajpy

回答

1

您應該使用get_or_insert()這將爲您的實體添加一個指定的密鑰。

所以,如果您的用戶名是name = 'Ada',你可以做這樣的事情:

user_db = User.get_or_insert(name.lower(), username=name) 

的第一個參數是key_name和我用了lower()功能只是爲了確保他們將是一致的,有人用一個名字除非你想要,否則'ADA'將無法​​創建新的實體。

+0

我得到這個錯誤:預期的字符串,得到用戶(key = Key('User','ada'):/ –

+1

好吧..你必須提供一個字符串作爲用戶的get_or_insert函數的第一個參數..檢查我在做什麼,請按照我發佈的鏈接。 – Lipis

+0

這不是我的解決方案。 –