2

アプリケーションの各ユーザーの設定を保存する必要があります。

ユーザーを設定オブジェクトの親として使用しようとしましたが、ユーザーがキーを持っていないため、これを行うことができません。次に、設定オブジェクトにユーザープロパティへの参照を持つインスタンスを作成しましたが、ドキュメントには、ユーザーがメールアドレスを変更するとUserPropertyが不安定であると記載されています。次に、user_idをStringProperty()に保存することにしましたが、ユーザーがOpenIdでログインする場合、user_id要素はNoneです。

ユーザー設定を、Googleアカウントとopen_idアカウントの両方で機能するユーザーオブジェクトに関連付ける方法はありますか?

4

1 に答える 1

0

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の親にしたことに注意してください。

于 2012-07-17T01:58:47.613 に答える