9

我正在尝试使用默认 Django 用户模型中的电子邮件字段作为用户名。我正在使用 Django 1.5,我看到默认用户有一个USERNAME_FIELD属性。

在我的项目中,我想USERNAME_FIELD = 'email'在用户模型中将以下设置为默认值。

这个小而基本的调整是我唯一想在用户模型中改变的地方。我想知道是否有一种方法可以改变 .USERNAME_FIELD而不必继承AbstractUser. 我在这个问题中看到您可以将其子类化AbstractUser并为其编写自定义管理器。

所以我想知道是否有更简单的方法来更改该属性?

如果没有,扩展AbstractUser使用电子邮件字段作为用户名的最小方法是什么?

4

2 回答 2

4
#Your app's __init__.py

from django.contrib.auth.models import User

User.USERNAME_FIELD = 'email'
于 2013-03-28T12:19:39.217 回答
1

您必须通过扩展 AbstractBaseUser 而不是 AbstractUser 来编写一个新的自定义用户类

在此处将您的电子邮件声明为 USERNAME_FIELD

或者,您还可以声明一个从 BaseUserManager 扩展的自定义用户管理器来处理用户名所需的约束。您可以从该经理的 create_user 函数中删除用户名

于 2014-07-16T13:25:08.970 回答