【问题标题】:Why not to extend User in Django REST为什么不在 Django REST 中扩展用户
【发布时间】:2014-05-08 16:44:39
【问题描述】:

我正在使用 Django REST 为我的应用创建用户。

我看到的每个地方,对于他们扩展 AbstractBaseUser 的用户。 我尝试扩展 User 模型,它似乎工作得很好。

我有一个扩展 Django 用户的 PersonalAbstractUser。然后,Worker 和 Client 扩展 PersonalAbstractUser。 到目前为止,登录和自定义权限似乎工作得很好,但是当我看到没有其他人在扩展用户时我开始担心......

这是为什么呢?我错过了什么吗?

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:

    这不是关于 Django REST 的问题,而是关于 Django 本身的问题。

    直接扩展User对象的问题在于它已经是一个具体的模型,所以扩展它会使用多表继承。这通常不是一个好主意 - 特别是如果您要进一步扩展它。

    AbstractUser 是一个抽象模型,但(与 AbatractBaseUser 不同)包含用户定义的所有字段。你应该使用它。

    【讨论】:

    • 那么,让用户分布在多个表中比必须编写自己的用户管理(创建、登录等)更糟糕?
    • 不确定您的问题与任何事情有什么关系。如果您将 AbstractUser 子类化,则无需编写任何自定义用户管理,因为它已全部提供。
    • 好吧,我一定是做错了什么,因为当我让 PersonalBaseUser 模型扩展 User 模型时,登录成功了。但是当我将其更改为扩展 AbstractBaseUser 时,登录不再起作用..(添加了“用户名”和 USERNAME_FIELD=username)
    猜你喜欢
    • 2016-04-08
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多