Azi*_*ari 3 django django-users
为了在Django 1.5.x中创建新的用户模型,有两种方法:
AbstractUser类,它是您获得的默认用户模型,这样您就可以使用所需的任何属性扩展它.但是,如果要删除任何字段,则技术上可行,但不建议使用 ; 我相信,即使可以做到,也违背了OOP原则.因此,如果您想要更改当前的用户模型,则有第二种方法.AbstractBaseUser,通过查看代码提供了非常基本的功能.除非您从默认的Django用户模型中复制它,否则您将错过权限,配置文件检索和绝对URL构造的所有优点.以上是我对情况的理解.如果我错了,请纠正我,但这并不意味着如果我想简单地username从模型中删除该字段,因为我根本不需要它,我必须复制粘贴框架中提供的模型代码和继承AbstractBaseUser和PermissionsMixin?对于这么简单的事情,这种方法对我来说看起来并不是很漂亮,而且它看起来有点奇怪,因为我很确定自定义用户模型的引入主要是因为email字段的流行用例作为用户标识符而不是username.
请你的想法(和更正).
如果您查看该django.contrib.auth.models文件的源代码,那么您将看到AbstractUser该类的定义相当短并且如下所示:
class AbstractUser(AbstractBaseUser, PermissionsMixin):
...
Run Code Online (Sandbox Code Playgroud)
它继承自AbstractBaseUser和PermissionMixin.您可以定义自定义模型,并从提到的类继承它以获得权限支持.如果你想要所有其他模型字段,那么你需要复制它们,但它也是一个定制符合你需求的东西的机会.