難道你不能在Google帳戶/ open_id帳戶周圍添加包裝類,因此您可以使用父級關係嗎?像下面這樣:
UserWrapper(db.Model):
user = db.UserProperty()
UserSettings(db.Model):
...
# New User
user = users.get_current_user()
new_user_settings = UserSettings(...)
new_user_wrapper = UserWrapper(key=user.nickname(),
parent=new_user_settings,
user=user)
# Login Existing User
user = users.get_current_user()
user_wrapper = UserWrapper.get_by_key_name(user.nickname())
user_settings = user_wrapper.parent()
如果用戶想改變他們的電子郵件地址,查找該UserSettings與舊的電子郵件,刪除相關UserWrapper,創建新的電子郵件地址和聯繫與老新UserWrapper用戶設置。
注意我已將UserSettings作爲UserWrapper的父項,以防將多個電子郵件地址與同一個帳戶相關聯可能會引起您的興趣。