如何扩展使用 AbstractBaseUser 创建的现有自定义用户模型以拥有多种用户类型,如客户、培训师和作者?

Posted

技术标签:

【中文标题】如何扩展使用 AbstractBaseUser 创建的现有自定义用户模型以拥有多种用户类型,如客户、培训师和作者?【英文标题】:How can I extend my existing Custom User Model created with AbstractBaseUser to have multiple user types like customer, trainer and author? 【发布时间】:2020-03-29 04:23:42 【问题描述】:

我有一个基于Django doc 创建的现有自定义用户模型,用于基于电子邮件 身份验证。

我想扩展模型以拥有多种用户类型,例如客户、培训师和作者。

我不确定如何继续前进,扩展它的最佳方式是什么?

另外,我是否使用 AbstractBaseUser 做出了正确的选择,还是应该使用 AbstractUser 类。

【问题讨论】:

请分享您现有的模型! @AbdulRehman 我现在只有帐户模型和自定义现在This is the code in my models.py with a few additional fields。 【参考方案1】:

将你的 MyUser 类重命名为 MyUserBase 或 MyUserAbstract,然后在这个类中

class MyUserBase(AbstractBaseUser):
  class Meta:
    abstract = True
  .
  .
  .

现在你可以扩展它了:

然后像这样重新创建您的 MyUser 类:

class MyUser(MyUserBase):
  pass

还有其他类似的模型:

class Trainer(MyUserBase):
  ... #other properties

class Customer(MyUserBase):
  ... #other properties

【讨论】:

以上是关于如何扩展使用 AbstractBaseUser 创建的现有自定义用户模型以拥有多种用户类型,如客户、培训师和作者?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Vue.js 将散列密码发布到 Django REST API AbstractBaseUser 自定义模型?

Django 重写用户模型

27_扩展User模型

Django用户认证模块中继承AbstractUser与AbstractBaseUser重写User表的区别

深入分析 AbstractBaseUser 和 AbstractUser 的区别

我需要 django 中 AbstractBaseUser 的 has_perm() 示例