0
我想存儲用戶在一個自定義的用戶NDB模型,我想使用的主要唯一鍵是電子郵件地址,因此我不知道是否使用以下模型可能是一個不錯的選擇:存儲電子郵件地址作爲模型ID或作爲實體屬性
class Users(ndb.Model):
uid = ndb.StringProperty(required=True)
user = ndb.UserProperty(auto_current_user_add=True)
name = ndb.StringProperty()
password = ndb.StringProperty()
通知我從屬性刪除電子郵件,這迫使我使用類似添加用戶:
Users(id="[email protected]")
或做查詢:
user = Users.get_by_id('[email protected]')
但想知道如果使用下面的模型還存儲了「電子郵件」作爲一個屬性可以給我一些好處,例如:
class Users(ndb.Model):
email = ndb.StringProperty(required=True)
uid = ndb.StringProperty(required=True)
user = ndb.UserProperty(auto_current_user_add=True)
name = ndb.StringProperty()
password = ndb.StringProperty()
我想使用電子郵件作爲唯一鍵的原因是因爲我主要使用OpenID進行身份驗證。
更新:
我做了一些測試,如果我想通過電子郵件進行搜索,似乎我能做到這一點是這樣的:
user_key = ndb.Key('Users', '[email protected]')
query = Users.query(Users.key == user_key, name = 'foo').get()
所以如果我是正確的,我可以完全刪除來自實體的電子郵件並僅將其用作密鑰。