私はdjango-social-authを使用していますが、そのシンプルさに本当に感銘を受けましたが、カスタム ユーザー モデルを使用し、save()
必要なフィールドのデフォルトの計算値を設定するためにメソッドをオーバーライドしました。問題は、save()
socialauth によって呼び出されません! これはどのように可能ですか?作成時に計算フィールド値を設定する別の方法はありますか?
1 に答える
0
この問題を解決するために、カスタムの「パイプライン」 (com.mysite.apps.users.social_auth.pipeline.addFacebookDetails) を作成しました。このパイプラインでは、作成時にのみ必要なデータをユーザー モデルに追加します。
settings.py で:
SOCIAL_AUTH_PIPELINE = (
'social_auth.backends.pipeline.social.social_auth_user',
'social_auth.backends.pipeline.user.get_username',
'social_auth.backends.pipeline.user.create_user',
'com.mysite.apps.users.social_auth.pipeline.addFacebookDetails',
'social_auth.backends.pipeline.social.associate_user',
'social_auth.backends.pipeline.user.update_user_details',
)
com.mysite.apps.users.social_auth.pipeline.addFacebookDetails.py で:
def addFacebookDetails(*args, **kwargs):
if kwargs['is_new']:
user = kwargs['user']
user.field1 = 'foo'
user.field2 = 'bar'
return None
于 2013-12-01T10:13:22.123 に答える