从model.Model直接继承用户模型,而不是在Django中使用自定义用户模型

时间:2019-07-28 18:36:34

标签: django django-models

在任何地方,每个人似乎都在使用从AbstractUserAbstractBaseUser类派生的“自定义用户模型”。

为什么没有人直接从models.Model继承用户模型? 会不会变得容易和简单得多?

使用这些自定义用户模型还提供哪些附加功能?

1 个答案:

答案 0 :(得分:0)

作为Django Docs状态:

  

构造兼容的自定义用户模型的最简单方法是从AbstractBaseUser继承。 AbstractBaseUser提供了用户模型的核心实现,包括哈希密码和令牌化密码重置。然后,您必须提供一些关键的实现细节。

AbstractBaseUser的字段不包含passwordlast_loginis_active。要实现自定义用户并使用与AbstractBaseUser附带的字段和/或身份验证不同的字段和/或身份验证,请使用AbstractUser

AbstractUser的子类AbstractBaseUser,并提供用户模型的基本实现。使用AbstractUser,您基本上可以使用User模型及其所有字段,但是它带有额外的继承函数和Django的身份验证实现。当您对Django提供用户和处理身份验证的方式感到满意时,可以使用AbstractUser