2013-05-17 4 views
0

django 1.5를 사용자 정의 사용자 모델과 통합 한 DSA (django-Social-Auth) v0.7.23을 통합했으며 사용자 이름 필드를 제외하고 auth/login이 올바르게 작동합니다 내 사용자 정의 사용자 모델에 저장되지 않습니다.사용자 정의 사용자 모델의 Django Social Auth 상점 사용자 이름

DSA 코드를 따라 가면 페이스 북에서 다시 전달 된 사용자 이름을 명시 적으로 제거한 것처럼 보입니다. 여기에 사용자 이름을 팝업 문제의 기능은 다음과 같습니다

@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 
내가 페이스 북에서 다시 전달 된 사용자 이름을 얻기에 관하여 가서 명시 적으로 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

내가 복용했던 경로 인 샘플 파이프 라인에 대해 감사합니다. USERNAME_FIELD가 정의 된 경우 사용자 이름이 팝업되어야하는 이유에 대해 더 혼란스러워했습니다. 내 사용자 정의 사용자 테이블은 사용자 이름 필드에 저장할 수 있도록 페이스 북에서 반환 된 사용자 이름을 원합니다. –

관련 문제