Django 1.8.16 django-allauth 0.27.0 データベースとしてpostgresを使用しています。django allauth空のユーザー名がポストのDBに重複キーを生成する
私のアプリケーションではユーザー名は使用せず、電子メールアドレスのみをユーザーIDとして使用します。 は、だから私は、次の設定を使用します。
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'
新しいユーザ登録は、彼が彼の電子メールアドレスを使用しています今すぐ。 しかし、登録フォームを送信するとき、私はこのエラーを取得:空のユーザー名は、すでに、AUTH_USERテーブルのフィールド「ユーザー名」が存在し、それが、これは許可されていないようだ。
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.
これは間違っている正確に何と言いますか? しかし、問題は上記の設定を使用してusernameフィールドが常に空であることです。 どうすればこの問題を回避できますか?
私はユーザーモデルに適合しませんでした。メールアドレスとuser.usernameフィールドを埋めallauthアカウントアダプタを、書くことによって解決
DBでは、フィールド 'username'は '一意'とマークされます。つまり、実際には、すべてのユーザーにとってNullにすることはできません。私はDBレベルでその 'ユニークな'制約を取り除くことができますが、これを行うにはよりクリーンな方法が必要ですか? – Davy
これをDBレベルで削除するのは簡単ではないようで、正しいことではありません。では、どうすればこの問題を回避できますか?あなたの助けにThx。 – Davy