2013-08-31 111 views
0

我正在使用django-social-auth,我對它的簡單性印象深刻,但是我使用自定義用戶模型,並且我忽略了save()方法爲了設置我需要的字段的默認計算值,問題是save()未被socialauth調用!這怎麼可能?在創建時是否有另一種設置計算字段值的方法?django-social-auth自定義用戶模型和覆蓋save()方法

+0

你有沒有試圖改變社會-auth的管道? http://django-social-auth.readthedocs.org/en/latest/pipeline.html – geekazoid

+0

是的我已經解決了我的問題,我忘了發佈我的解決方案:P – daveoncode

+0

你可以發佈你的解決方案和你的代碼嗎?我有類似的問題,我認爲你的解決方案可能對我有幫助。 – jackiekazil

回答

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