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