难道你不能在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的父项,以防将多个电子邮件地址与同一个帐户相关联可能会引起您的兴趣。