django-social-auth具有自定义用户模型和重写的save()方法

时间:2013-08-31 17:02:44

标签: django django-models django-socialauth

我正在使用 django-social-auth ,我对其简洁性印象深刻,但是我使用自定义用户模型并且我重写了save()方法以便为我需要的字段设置默认计算值,问题是socialauth没有调用save()!这怎么可能?是否有另一种在创建时设置计算字段值的方法?

1 个答案:

答案 0 :(得分: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