장고 1.8.16 django-allauth 0.27.0 postgres를 데이터베이스로 사용합니다.django allauth 비어있는 사용자 이름은 후행 DB에서 중복 키를 발생시킵니다.
내 응용 프로그램에서는 사용자 이름을 전자 메일 주소로 사용하지 않고 사용자 이름 만 사용합니다. 그래서 나는 다음과 같은 설정을 사용
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_VERIFICATION = "mandatory"
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_USER_MODEL_EMAIL_FIELD = 'email'
새로운 사용자 등록, 그는 자신의 전자 메일 주소를 사용하여 지금. 그러나 등록 양식을 제출할 때,이 오류가 발생합니다 :
IntegrityError at /accounts/signup/
duplicate key value violates unique constraint "auth_user_username_key"
DETAIL: Key (username)=() already exists.
Request Method: POST
Request URL: http://swd.localhost:8000/accounts/signup/
Django Version: 1.8.16
Exception Type: IntegrityError
Exception Value:
duplicate key value violates unique constraint "auth_user_username_key"
DETAIL: Key (username)=() already exists.
이 말하는 정확히 무엇을 잘못 : 빈 사용자 이름이 이미 AUTH_USER 테이블, 필드 "사용자 이름"에 존재하고, 이것이 허용되지 않는 것 같습니다? 하지만 위의 설정을 사용하면 사용자 이름 필드가 항상 비어 있습니다. 어떻게이 문제를 해결할 수 있습니까?
나는 사용자 모델을 채택하지 않았습니다. 이메일 주소로 user.username 필드를 채우고 allauth 계정 어댑터를 작성하여 해결
DB에서 'username'필드는 '고유'로 표시됩니다. 따라서 이것이 실제로 모든 사용자에 대해 Null이 될 수 없다는 것을 의미합니다. DB 수준에서 '고유'제약 조건을 제거 할 수 있지만이를 수행하는 더 깨끗한 방법이 있어야합니까? – Davy
DB 수준에서이를 제거하는 것이 간단하지 않은 것처럼 보이며 올바른 방법이 아닙니다. 그럼 어떻게이 문제를 해결할 수 있을까요? Thx 당신의 도움. – Davy