0

私はdjango-social-authを使用していますが、そのシンプルさに本当に感銘を受けましたが、カスタム ユーザー モデルを使用し、save()必要なフィールドのデフォルトの計算値を設定するためにメソッドをオーバーライドしました。問題は、save()socialauth によって呼び出されません! これはどのように可能ですか?作成時に計算フィールド値を設定する別の方法はありますか?

4

1 に答える 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 に答える