Django:需要用户电子邮件

时间:2018-03-06 15:47:13

标签: python django

对于我的应用程序,应该要求用户的电子邮件字段。对于默认的用户模型,情况并非如此。所以我认为按照docs

中的描述创建自定义用户模型是有意义的
  

如果您正在开始一个新项目,强烈建议您设置一个   自定义用户模型,即使默认用户模型足够   您。此模型的行为与默认用户模型相同,但是   如果需要,您将来可以自定义它:

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    email = models.EmailField(_('email address'), blank=False)

但是,我不确定这是否是实现这一目标的正确方法。

原因是Django文档here说:

  

当你想要一些常见的时候,抽象基类很有用   信息转化为其他一些模型。你写了你的基类   并在Meta类中放置abstract = True。这个模型将不会   用于创建任何数据库表。相反,当它用作基础时   对于其他模型的类,其字段将添加到子项的字段中   类。 在抽象基类中包含字段是错误的   与孩子的名字相同(而Django会提出一个   除外)。

我现在该怎么办?

3 个答案:

答案 0 :(得分:4)

我必须回答我的问题,因为现在我知道了解决方案:

我在开始帖子中描述的方式应该有效。文档是错的: https://code.djangoproject.com/ticket/29192

答案 1 :(得分:2)

添加models.py

oauth2client

答案 2 :(得分:-1)

编辑:您必须继承AbstractBaseUser并实现所有其他属性。

from django.contrib.auth.models import AbstractBaseUser, UserManager

class User(AbstractBaseUser):
    email = models.EmailField(_('email address'), blank=False)       
    objects = UserManager()

第二次编辑:

Aliquis答案是正确答案。当前文档只是wrong:"抽象基类中的字段与子项中的字段具有相同的名称是错误的(而Django将引发异常)。"