2016-12-30 3 views
1

저는 장고 등록 패키지를 사용하여 장고 웹 사이트를 만들고 있습니다. 사용자가 자신의 이메일에 등록하고 사용자 이름이 없어서 페이스 북과 같은 실제 이름을 가진 인터페이스를 가지고 이메일을 통해 해당 정보를 추적 할 수 있기를 바랍니다.django 사용자의 동일한 사용자 이름 및 전자 메일?

나중에 사용자 프로필을 필요로하고 oneToOne 필드를 사용하여 사용자 모델을 확장 할 계획이지만 현재 사용자 이름으로 이메일을 사용하는 방법을 잘 모르겠습니다. 나는 단순히 사용자에게 이메일을 요청할 수도 있고 사용자 이름으로 저장할 수도 있고 간단한 수정이라고 생각했다. 그러나 모든 양식을 수정해야하며 데이터베이스 (email = username)에 본질적으로 중복 된 열을 만듭니다.

이 질문은 정말로 끝났습니다. 프로젝트 중간에 사용자 모델을 변경하는 쉬운 방법이 있는지 알고 싶습니다. User (AbstractUser) 클래스에 관한 문서를 읽었지만 프로젝트를 시작한 경우에만 좋은 것 같습니다.

감사합니다. 도움을 주시면 감사하겠습니다.

답변

1

당신은 AbstractBaseUser를 확장하여 사용자 정의 사용자 클래스를 작성하고, 같은 USERNAME_FIELD로 이메일 필드를 선언 할 수 AbstractBaseUser이 apps.py 수입 사용자의 모델이 될 수있는 확장하지 않고 주위

USERNAME_FIELD = 'email' 

또 다른 일을하고 같은 USERNAME_FIELD 설정 :

from django.contrib.auth.models import User 
User.USERNAME_FIELD = 'email' 
+0

좀 더 자세한 정보를 제공해 주시겠습니까? 저는 아직 분실 상태입니다. 이것은 정말 쉽고 직선적 인 수정처럼 보이지만 아직 올바르게 구현할 수 없습니다. 감사! –

+0

'django.contrib.auth.models.User'는 사용자를 유일하게 식별하기 위해'username'을 사용합니다. 이 동작을 무시하려면 두 가지 옵션 중 하나 인'django.contrib.auth.models.User'의 고유하지 않은'email' 필드를 사용하여'USERNAME_FIELD'로 표시하거나 커스텀 사용자를 작성할 수있는 커스텀 인증 백엔드를 작성하십시오 'AbstractUser' 클래스를 상속 받아 모델을 만듭니다. 인증 백엔드에서 엉망이되고 싶지 않다면 사용자 정의 사용자 모델을 작성하라고 제안합니다. – Darshit