【发布时间】:2013-09-17 03:53:46
【问题描述】:
为了在 Django 1.5.x 中创建新的用户模型,有两种方法:
- 继承
AbstractUser类,这是您获得的默认用户模型,这样您就可以使用您想要的任何属性对其进行扩展。但是,如果您想删除任何字段,这在技术上是可行的,但 not recommended;即使可以做到,我相信它也违反了 OOP 原则。因此,如果您想改变当前的用户模型,还有第二种方法。 - 继承
AbstractBaseUser,looking at the code 提供了非常基本的功能。你会错过权限、配置文件检索和绝对 URL 构造的所有优点,除非你从默认的 Django 用户模型复制它。
以上是我对情况的理解。如果我错了,请纠正我,但这是否意味着如果我想简单地从模型中删除 username 字段,因为我根本不需要它,我必须复制粘贴中提供的模型代码框架并从AbstractBaseUser 和PermissionsMixin 继承?对于这么简单的事情,这种方法对我来说看起来不是很漂亮,而且看起来有点奇怪,因为我很确定自定义用户模型的引入主要是因为email 字段作为用户的流行用例标识符而不是username。
请提出您的想法(和更正)。
【问题讨论】:
-
DJango 不建议这样做。不应从继承模型中的父 Django 模型中删除字段。stackoverflow.com/questions/611691/…
-
@SrinivasReddyThatiparthy 我已经在帖子中指出了这一点。
-
为什么不直接覆盖子类中的用户名类属性呢?它甚至可以返回 instance.email。
标签: django django-users