2013-05-17 32 views
0

我剛剛使用django 1.5與自定義用戶模型集成了Django-Social-Auth(DSA)v0.7.23,auth/login工作正常,除了用戶名字段這是不存儲在我的自定義用戶模型。Django Social Auth存儲自定義用戶模型中Facebook的用戶名

逐步通過DSA代碼,它似乎明確地刪除了由Facebook傳回的用戶名。下面是彈出用戶名關閉有問題的功能:

@classmethod 
def username_field(cls, values): 
    user_model = cls.user_model() 
    if hasattr(user_model, 'USERNAME_FIELD'): 
     # Django 1.5 custom user model, 'username' is just for internal 
     # use, doesn't imply that the model should have an username field 
     values[user_model.USERNAME_FIELD] = values.pop('username') # Username removed 
    return values 

我該如何去獲得一個從Facebook的傳回的用戶名,並通過DSA被顯式刪除沒有?

我相信一個解決辦法是創建一個自定義管道來生成用戶名。不過,我想知道是否有其他人遇到過這種情況,並利用DSA中已經存在的任何東西(即特定的settings.py配置)

謝謝。

回答

2

原來的用戶名是在details屬性傳遞給管道可用功能,藉此例如:

def generated_username(user, details, *args, **kwargs): 
    username = details['username'] 
    user.your_field = username 
    user.save() 

值得一提的是,用戶名是從值彈出,如果你在你的自定義模型中定義的USERNAME_FIELD

+0

感謝omab的採樣管道,這是我採取的路線。如果定義了USERNAME_FIELD,我更加困惑於爲什麼應該彈出用戶名。我的自定義用戶表需要從Facebook返回的用戶名,以便它可以存儲在用戶名字段中。 –

相關問題