Python 使用联合登录时保存用户设置
我需要在我的应用程序上保存每个用户的设置 我尝试将该用户用作设置对象的父对象,但无法执行此操作,因为用户没有密钥。 然后,我在我的设置对象中创建了一个实例,该实例引用了用户属性,但在文档中,如果用户更改其电子邮件地址,则表示UserProperty不稳定。 然后,我决定将user_id保存在StringProperty中,但如果用户使用OpenId登录,则user_id元素为NonePython 使用联合登录时保存用户设置,python,google-app-engine,openid,Python,Google App Engine,Openid,我需要在我的应用程序上保存每个用户的设置 我尝试将该用户用作设置对象的父对象,但无法执行此操作,因为用户没有密钥。 然后,我在我的设置对象中创建了一个实例,该实例引用了用户属性,但在文档中,如果用户更改其电子邮件地址,则表示UserProperty不稳定。 然后,我决定将user_id保存在StringProperty中,但如果用户使用OpenId登录,则user_id元素为None 有没有办法将用户设置绑定到同时适用于google帐户和open_id帐户的用户对象?能否在google帐户/op
有没有办法将用户设置绑定到同时适用于google帐户和open_id帐户的用户对象?能否在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关联
注意,我已将UserSettings设置为UserWrapper的父级,以防将多个电子邮件地址与同一帐户关联可能会引起兴趣。您不能在google帐户/open\u id帐户周围添加一个wrapper类,以便使用父级关系吗?如下所示:
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关联
注意,我已将UserSettings设置为UserWrapper的父级,以防将多个电子邮件地址与同一帐户关联可能会引起兴趣