我正在尝试使用默认Django用户模型中的电子邮件字段作为用户名。我正在使用Django 1.5,我发现默认用户有一个USERNAME_FIELD
属性。
在我的项目中,我想在用户模型中将以下USERNAME_FIELD = 'email'
设置为默认值。
这个小但基本的调整是我想在用户模型中改变的唯一方法。我想知道是否有一种方法可以更改USERNAME_FIELD
而无需继承AbstractUser。我在this question中看到你可以继承AbstractUser
并为它编写一个自定义管理器。
所以我想知道是否有更简单的方法来改变这个属性?
如果没有,那么将AbstractUser
扩展为使用电子邮件字段作为用户名的最小方法是什么?
答案 0 :(得分:4)
#Your app's __init__.py
from django.contrib.auth.models import User
User.USERNAME_FIELD = 'email'
答案 1 :(得分:1)
您必须通过扩展AbstractBaseUser而不是AbstractUser
来编写新的自定义用户类将您的电子邮件声明为USERNAME_FIELD
或者,您也可以声明从BaseUserManager扩展的自定义用户管理器,以处理用户名所需的约束。 您可以从该经理的create_user函数中删除用户名