2014-03-14 33 views
0

我使用Django的社會身份驗證的,如果它不存在於數據庫中存在這將創建一個新用戶的Facebook登錄默認CREATE_USER功能,否則更新現有的數據庫條目。我認爲它檢查數據庫中的fb_usernamefb_uid以檢查用戶是否存在。如何自定義在Django權威性

要求: 在我的應用程序中,我需要能夠通過手動插入他的信息在db中創建一個用戶。當用戶使用facebook登錄時,這一行應該被更新。

所以我手動創建與用戶的所有信息的入口即fb_username, fb_uid, email, first_name, last_name, hometown... etc. 但是,當用戶logs_in是,創建,而不是更新手動創建條目的新條目會發生什麼。所以我真的不明白它用來檢查用戶是否存在的字段。什麼是最好的方式從這裏走?

額外的信息:我使用的是一比一的關係和AUTH_PROFILE_MODULE = 'accounts.UserProfile'

+0

如何創建它的新條目時,用戶登錄? –

+0

我正在使用django-social-auth庫...在配置帶有必需字段的庫後,它負責創建或更新條目。儘快創建用戶更新額外的(用戶配置)的信息,我使用自定義[管道](http://django-social-auth.readthedocs.org/en/latest/pipeline.html)。 – suneet

回答

0

做了修改這個默認管道

'social_auth.backends.pipeline.user.create_user',

的唯一途徑的Django用戶模型延伸到 UserProfile

通過改變

def create_user(backend,details,response,username,user=None,*args,**kwargs): if user: return {'user': user} if not username: return None

def create_user(backend,details,response,username,user=None,*args,**kwargs): username = User.objects.get(u_name=username) if username: return {'user': username} if not username: return None