Djangoプロジェクトでカスタムユーザモデルを使用しようとしています。移行を実行すると、データベーステーブルの名前はaccounts_listuser
となりますが、Djangoはaccounts_user
を探しているようです。これを変更するにはどうすればDjangoはaccounts_listuser
ではなく、ユーザモデルの正しいテーブル(accounts_user
)を調べますか?私のsettings.pyでDjangoがカスタムユーザモデルの正しいテーブル名を検索しない
:
# Auth user models
AUTH_USER_MODEL = 'accounts.User'
AUTHENTICATION_BACKENDS = (
'accounts.authentication.PersonaAuthenticationBackend'
)
アカウント/ models.pyファイル:
class User(models.Model):
email = models.EmailField(primary_key=True)
last_login = models.DateTimeField(default=timezone.now)
REQUIRED_FIELDS =()
USERNAME_FIELD = 'email'
is_authenticated = True
is_anonymous = False
とクエリが失敗したファイル(アカウント/ authentication.py):
from django.contrib.auth import get_user_model
User = get_user_model()
# .. user's email retrieved ..
def get_user(self, email):
try:
return User.objects.get(email=email)
except User.DoesNotExist:
return None
完全なソースコードcan be found hereが役立ちます。
優れた答えです。もう少し詳しい情報を追加するだけです:AbstractBaseUserから継承する場合は、これらのユーザーの一部に管理者アクセスなどが必要な場合は、PermissionsMixinも継承することをお勧めします。 –