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 回答