我可以在不创建自定义用户的情况下更改Django 1.5中的USERNAME_FIELD吗?

时间:2013-03-27 19:50:32

标签: django email model username django-1.5

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

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

这个小但基本的调整是我想在用户模型中改变的唯一方法。我想知道是否有一种方法可以更改USERNAME_FIELD而无需继承AbstractUser。我在this question中看到你可以继承AbstractUser并为它编写一个自定义管理器。

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

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

2 个答案:

答案 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函数中删除用户名