web-dev-qa-db-ja.com

Django-allauthから「username」フィールドを削除します

Django-registrationがDjango 1.5およびカスタムユーザーモデルをサポートしていない場合。最初からDjango-allauthを使用しようとしていますが、これはすばらしい製品です。

私が持っている問題-ユーザー名フィールドが必要ですが、私のアプリにはユーザー名がありません。したがって、allauthのドキュメントには次のように書かれています。

**Available settings:**
ACCOUNT_AUTHENTICATION_METHOD (="username" | "email" | "username_email")

使用するログイン方法を指定します。ユーザーがユーザー名、電子メールアドレス、またはその両方を入力してログインするかどうかを指定します。

わかりました、完了しましたが、エラーが発生しました:

AssertionError at /accounts/signup/
No exception supplied

models.py:

class MyUser(AbstractBaseUser, PermissionsMixin):
    title = models.CharField ('Name', max_length=100)
    email = models.EmailField('Email', max_length=255, unique=True)
    ...

settings.py

ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = ('email')
AUTH_USER_MODEL = 'internboard.MyUser'

私が間違っていることは何ですか?

22
Rukomoynikov

おかげで、私は私のタスクのための正しい設定を見つけました:

ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
43
Rukomoynikov

スタックトレースでDjango.core.exceptions.FieldDoesNotExist: Account has no field named 'username'を参照してエラーUSER_MODEL_USERNAME_FIELDが発生した場合は、ACCOUNT_USER_MODEL_USERNAME_FIELDNone(またはユースケースに適したフィールド)に設定する必要もあります。 )。必要な設定の完全なセットは次のとおりです。

ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_USERNAME_REQUIRED = False

この設定については、 カスタムユーザーモデル のDjango-allauthドキュメントで詳しく説明されており、デフォルトは 構成 で概説されています。

12
Zags