在任何地方,每个人似乎都在使用从AbstractUser
或AbstractBaseUser
类派生的“自定义用户模型”。
为什么没有人直接从models.Model
继承用户模型?
会不会变得容易和简单得多?
使用这些自定义用户模型还提供哪些附加功能?
答案 0 :(得分:0)
作为Django Docs状态:
构造兼容的自定义用户模型的最简单方法是从AbstractBaseUser继承。 AbstractBaseUser提供了用户模型的核心实现,包括哈希密码和令牌化密码重置。然后,您必须提供一些关键的实现细节。
AbstractBaseUser
的字段不包含password
,last_login
和is_active
。要实现自定义用户并使用与AbstractBaseUser
附带的字段和/或身份验证不同的字段和/或身份验证,请使用AbstractUser
。
AbstractUser
的子类AbstractBaseUser
,并提供用户模型的基本实现。使用AbstractUser
,您基本上可以使用User
模型及其所有字段,但是它带有额外的继承函数和Django的身份验证实现。当您对Django提供用户和处理身份验证的方式感到满意时,可以使用AbstractUser
。